JavaScript:默认对象'的属性和方法

JavaScript: default object's properties and methods

本文关键字:属性 方法 默认 对象 JavaScript      更新时间:2023-09-26

正如您所知,在javascript函数是对象的情况下,我的问题是以下代码:

function Car() {
 this.color = "black";
}
console.log(Car.name);
console.log(Car.color);

输出:汽车未定义

既然我可以访问Car对象的name属性,为什么我不能以同样的方式访问Car物体的color特性。

另一个例子:

console.log("Hello".charAt.name);
console.log("Hello".charAt.length);  

输出:charAt 1

这里charAt是String对象的一个方法,但我使用它的名称作为访问namelength属性的引用,不仅访问这些属性,还访问一些方法,如:hasOwnPropertyisPrototypeOf

我的问题是,这些属性和方法究竟是什么?

在类术语中,nameCar类的属性,而colorCar类实例的属性。您只能在创建color属性的新实例时访问该属性。

function Car() {
  this.color = "black"; 
}
var car = new Car()
document.write(Car.name +'<br>');
document.write(car.color +'<br>');

在第一个示例中,您试图访问function Car的属性color

function Car() {
 this.color = "black";
console.log(this)//Window {}
};
/*you need to set Car.color */
Car.color = 'white';
console.log(Car.name);//Car
console.log(Car.color);//white
Car();
console.log(color)//black
//Car
//white
//Window {}
//black

而name属性是在函数声明中自动设置的。。

当正常调用时,在非严格情况下,函数内的this指的是Window对象(在浏览器上是全局的);


另一方面,如果您将函数调用为构造函数,则this引用返回对象:

function Car() {
 this.color = "black";
console.log(this)   //object instance assigned to mazda
};
 var mazda = new Car();
console.log(mazda.color)