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

时间:2015-11-05 14:27:24

标签: javascript

如您所知,在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对象的一种方法,但我使用其名称作为参考来访问名称长度属性,而不仅仅是这些属性以及一些方法,例如: hasOwnProperty isPrototypeOf

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

2 个答案:

答案 0 :(得分:2)

在课堂上,name是类Car的属性,而color是类Car的实例的属性。您只能在创建新实例时访问color属性。



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

答案 1 :(得分:0)

在您的第一个示例中,您尝试访问color的媒体资源function Car;

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)