javascript - “this”和 ObjectName(例如:Person)有什么区别?
问题描述
谁能告诉我以下两个代码之间的区别:
var Person = {
Cars: [],
init: function(){
this.Cars = [];
}
};
和
var Person = {
Cars: [],
init: function(){
Person.Cars = [];
}
};
一个使用“this”,另一个使用“Person”。
谢谢
解决方案
在第二个代码中,总是init
会在. 另一方面,在第一个代码中,创建属性的对象取决于调用上下文。例如,如果您要将函数放在其他对象上然后调用它,则其他对象会发生变异:Cars
Person
Cars
init
var Person = {
Cars: [],
init: function(){
this.Cars = [];
}
};
var myVar = {};
myVar.init = Person.init;
myVar.init();
console.log(myVar);
如果你使用,你可以做同样的事情.call
:
var Person = {
Cars: [],
init: function(){
this.Cars = [];
}
};
var myVar = {};
Person.init.call(myVar);
console.log(myVar);
当您提到 时this
,您指的是调用上下文,而不是静态变量/对象。
推荐阅读
- php - Laravel 5 运行队列:按 laravel 时间表工作
- kotlin - mockk 验证 lambda 参数
- angular - 如何将 DomSanitizer 作为打字稿中的参数传递给管道?
- typescript - 编辑动态添加的输入字段的值
- ruby - 清除开罗的当前路径
- cloud-foundry - 来自cli的PCF登录问题
- google-cloud-platform - 使用 gcsfuse 同步存储桶后性能下降
- angular - 如何使用 @angular/elements 扩展 HTMLButtonElement
- spring - 使用 Cassandra 自行引用的用户定义类型
- python-3.x - pythonTypeError:不能将序列乘以“列表”类型的非整数