JavaScript 中对象的属性使用 this 和不使用 this
properties of object in javascript using this and without this
我有一个这样的变量定义:
var obj = function(){
this.prop1 = "prop1";
return this;
}
obj.prop2 = "prop2";
我在尝试访问obj().prop2
时得到一个undefined
值。
此外,当尝试返回obj.prop1
但obj.prop2
返回prop2
值时,返回未定义。
- 我想知道
obj().prop2
返回未定义值的原因。 - 执行
obj.prop2 = "prop2"
时属性是否prop2
不是同一对象的一部分; - 为什么
obj.prop1
返回undefined
值。
我在尝试访问 obj().prop2 时得到一个未定义的值。
这是因为obj()
返回this
,这是您执行函数的上下文。但是,您将prop2
分配给函数对象,而不是要返回的上下文。
尝试返回 obj.prop1但 obj.prop2 返回 prop2 值时返回未定义
在代码中,obj
是一个函数对象,没有为其分配prop1
属性。您将prop1
分配给执行函数的上下文,这是一个很大的不同。
如果需要,您可以使用另一个上下文执行obj()
,这可能更有意义:
var obj = function() {
this.prop1 = 'prop1';
return this;
}.call({ prop2: 'prop2' });
这将导致:{prop2: "prop2", prop1: "prop1"}
如果你想让this
工作(或instanceOf
),你必须使用new
。 新关键字将this
绑定到新创建的对象,其原型是函数原型
如果你想使用它,你可以编写如下代码
var obj = function(propValue){
return {
prop1: propValue
};
}
var objectCheck = obj('prop1');
console.log(objectCheck .prop1);
objectCheck .prop2 = "prop2";
console.log(objectCheck .prop2);
这很容易理解,obj 函数返回一个属性为 prop1 的对象,然后您将 prop2 添加到该对象
相关文章:
- javascript中对象构造函数中的var属性与this.properties
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- 为什么我可以'不要使用xx[this.index].style.display?它's说“;无法读取属性
- ember.js计算属性中this的值是如何定义的
- $(this) 在 onclick 属性中不起作用
- jQuery插件返回this.each并为每个对象添加函数属性
- 使用 $(this) 的属性
- 通过函数传递“this”时,我是否可以无法访问“this”的属性
- Jquery $this属性选择器是否包含单词
- Javascript对象,其属性是有关“this”的函数详细信息
- 为什么您可以在不引用“this”的情况下操作对象属性
- jQuery - 如何在 jquery 中访问 “this.options” dataSousrce 属性
- 如何使用“self = this”访问类属性
- JavaScript 中对象的属性使用 this 和不使用 this
- 在 Javascript 中,在执行深度复制时,由于属性为“this”,我如何避免循环
- 在 JavaScript/TypeScript 中动态地“直接”添加对象属性到“this”
- 对象中的函数和对“this”属性的访问 - 失败
- XmlHttpRequest加载' this '属性
- 多个$this属性用于JS中可重用的类
- 如何在jQuery中选择与this属性匹配的所有元素