JavaScript:默认对象'的属性和方法
JavaScript: default object's properties and methods
正如您所知,在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对象的一个方法,但我使用它的名称作为访问name和length属性的引用,不仅访问这些属性,还访问一些方法,如:hasOwnProperty,isPrototypeOf
我的问题是,这些属性和方法究竟是什么?
在类术语中,name
是Car
类的属性,而color
是Car
类实例的属性。您只能在创建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)
相关文章:
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题