javascript原型变量未定义,但I';我不知道为什么。
我以为我是在用javascript“理解”它,然后我遇到了这样的事情。我不知道为什么uu sfont的值没有定义javascript原型变量未定义,但I';我不知道为什么。,javascript,Javascript,我以为我是在用javascript“理解”它,然后我遇到了这样的事情。我不知道为什么uu sfont的值没有定义 var __container = "It contains "; function myObject() { var temp = 'temp'; } myObject.prototype = { constructor: myObject, searchingFor: { __sfcont: "a div block ", label: this.
var __container = "It contains ";
function myObject() {
var temp = 'temp';
}
myObject.prototype = {
constructor: myObject,
searchingFor: {
__sfcont: "a div block ",
label: this.__sfcont + "and a label.",
dropdown: this.__sfcont + "and a dropdown."
}
};
var myObj = new myObject();
console.log(myObj.searchingFor.label);
这样做的预期结果是
它包含一个div块和一个标签。
但我得到了未定义和一个标签。
初始化时无法访问对象属性。您可以定义变量,然后重新使用它:
var __sfcont = "a div block ";
myObject.prototype = {
constructor: myObject,
searchingFor: {
__sfcont: __sfcont,
label: __sfcont + "and a label.",
dropdown: __sfcont + "and a dropdown."
}
};
初始化时无法访问对象属性。您可以定义变量,然后重新使用它:
var __sfcont = "a div block ";
myObject.prototype = {
constructor: myObject,
searchingFor: {
__sfcont: __sfcont,
label: __sfcont + "and a label.",
dropdown: __sfcont + "and a dropdown."
}
};
在执行
this.\uu sfcont+”和一个label.,
时,此
不是您所期望的。它不是尚未构造的搜索
,而是执行myObject.prototype={…}
的上下文。该上下文没有\u sfcont
属性
将标签
(以及下拉列表
)作为一种方法:
label: function() { this.__sfcont + "and a label."; },
...
console.log(myObj.searchingFor.label());
在执行
this.\uu sfcont+”和一个label.,
时,此
不是您所期望的。它不是尚未构造的搜索
,而是执行myObject.prototype={…}
的上下文。该上下文没有\u sfcont
属性
将标签
(以及下拉列表
)作为一种方法:
label: function() { this.__sfcont + "and a label."; },
...
console.log(myObj.searchingFor.label());
你也可以用吸气剂
myObject.prototype = {
constructor: myObject,
searchingFor: {
__sfcont: "a div block ",
get label() {
return this.__sfcont + "and a label"
}
}
};
console.log(myObject.searchingFor.label)
你也可以用吸气剂
myObject.prototype = {
constructor: myObject,
searchingFor: {
__sfcont: "a div block ",
get label() {
return this.__sfcont + "and a label"
}
}
};
console.log(myObject.searchingFor.label)
尝试使用
label:this.toString()
进行测试,并查看您得到了什么。您没有在任何地方分配\uu容器
。这可能会令人困惑,因为您通常可以通过跟踪上下文到最近的父范围来跟踪其含义。我认为眼睛会查找最近的大括号以找到最近的父作用域,但在这种情况下,大括号用于声明对象文字,而不是作用域。@sdgluck啊,是的。一个疏忽尝试使用label:this.toString()
进行测试,并查看您得到了什么。您没有在任何地方分配\uu容器
。这可能会令人困惑,因为您通常可以通过跟踪上下文到最近的父范围来跟踪其含义。我认为眼睛会查找最近的大括号以找到最近的父作用域,但在这种情况下,大括号用于声明对象文字,而不是作用域。@sdgluck啊,是的。一个疏忽哦,对了!谢谢正如sdgluck提到的,我忘记在我的示例代码中使用_容器。现在我有了sfcontainer+“一个div块”、
和label:function(){返回这个.\uu sfcont+”和一个label.;},
然后就达到了预期的结果。哦,对了!谢谢正如sdgluck提到的,我忘记在我的示例代码中使用_容器。因此,现在我有了sfcontainer+“一个div块”、
和label:function(){返回这个.\uu sfcont+”和一个label.;},
然后实现了预期的结果。