如何使用变量作为构造函数属性?
How to use a variable as constructor property?
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
returns 未定义。
如果我将 this.k = v;
更改为 this[k] = v;
并在每个循环中执行 console.log(this.model)
,控制台 returns "Polo undefined" 和 console.log($polo);
也仍然 returns 未定义。
有什么想法吗?
你return没有任何功能。
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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
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表示-"the keyword this refers to the element."
所以你应该做的是将 this
分配给另一个变量。让我们说 self
并改用它。而且你不需要 return 任何东西
(self or this), JS 负责
工作FIDDLE
在当前对象中分配对象 属性 基本上是个问题。这是正确的代码并且有效。
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);
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
returns 未定义。
如果我将 this.k = v;
更改为 this[k] = v;
并在每个循环中执行 console.log(this.model)
,控制台 returns "Polo undefined" 和 console.log($polo);
也仍然 returns 未定义。
有什么想法吗?
你return没有任何功能。
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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
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表示-"the keyword this refers to the element."
所以你应该做的是将 this
分配给另一个变量。让我们说 self
并改用它。而且你不需要 return 任何东西
(self or this), JS 负责
工作FIDDLE
在当前对象中分配对象 属性 基本上是个问题。这是正确的代码并且有效。
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);