function Volkswaggen($options) {
$.each($options, function(k,v) {
this.k = v;
});
}
/* ============================== */
var $polo = new Volkswaggen({model: "Polo", doors: 3});
console.log($polo.model); // << I want this to return "Polo"
$polo.model
返回undefined。
如果我将this.k = v;
更改为this[k] = v;
并在内执行console.log(this.model)
每个循环,控制台将返回“Polo undefined”并且console.log($polo);
仍然返回undefined。
有什么想法吗?
答案 0 :(得分:0)
你没有从函数中返回任何内容。
function Volkswaggen($options) {
var temp = this;
$.each($options, function(k, v) {
temp[k] = v;
});
}
/* =========================================== */
var $polo = new Volkswaggen({model: "Polo", doors: 3});
console.log($polo.model);
alert($polo.model);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
function Volkswaggen($options) {
var self = this;
$.each($options, function(k, v) {
self[k] = v;
});
}
/* =========================================== */
var $polo = new Volkswaggen({model: "Polo", doors: 3});
console.log($polo.model);
内$.each
this
不是新创建的对象,jQuery说 - &#34;关键字this指的是元素。&#34;
所以你应该做的是将this
分配给另一个变量。让我们说self
并使用它。而且你不必返回任何东西
(自我或者这个),JS负责那个
工作FIDDLE
答案 2 :(得分:0)
在当前对象中分配对象属性基本上是个问题。这是正确的代码,它可以工作。
function Volkswaggen($options) {
for (var k in $options) {
if ($options.hasOwnProperty(k)) {
this[k] = $options[k];
}
}
}
var $polo = new Volkswaggen({model: "Polo", doors: 3});
console.log($polo);
console.log($polo.model);
console.log($polo.doors);