javascript对不同的名称做了新的修改
我理解self这个词在javascript中没有特殊意义。在下面的代码中,如果一个人写的是var Life=function(…),这是很清楚的,但作者决定写var_u2;=self.Life=function(…)。虽然我理解var uu部分(因此在内部,它可以用较短的名称来引用samething),但我没有得到self.Life(而不是Life)。。有人能解释一下吗javascript对不同的名称做了新的修改,javascript,Javascript,我理解self这个词在javascript中没有特殊意义。在下面的代码中,如果一个人写的是var Life=function(…),这是很清楚的,但作者决定写var_u2;=self.Life=function(…)。虽然我理解var uu部分(因此在内部,它可以用较短的名称来引用samething),但我没有得到self.Life(而不是Life)。。有人能解释一下吗 (function() { var _ = self.Life = function(seed) {
(function() {
var _ = self.Life = function(seed) {
this.seed = seed;
this.height = seed.length;
this.width = seed[0].length;
this.prevBoard = [];
this.board = cloneArray(seed);
};
_.prototype = {
next: function() {
//
},
toString: function() {
return this.board.map(function(row) {
return row.join(' ');
}).join('\n');
}
};
function cloneArray(array) {
return array.slice().map(function(row) {
return row.slice();
});
}
})();
undefined
var game = new Life([
[0, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 1]
]);
undefined
console.log(game + ' ');
我理解self
这个词在javascript中没有特殊意义
不,但它是一个,指的是当前窗口(如window
does*)。所以
…正在使生活
成为全球性的,而不会沦为**的牺牲品
现场简要示例:
(函数(){
var u=self.Life=function(){
console.log(“你好”);
};
新的;
})();
新生活()代码>在这种情况下,\是闭包内的局部变量。但self指的是当前创建和执行此iLife的窗口。因此,self.Life将使它成为一个附加到当前窗口的函数,就像window.Life一样,这样就可以从窗口中的任何位置直接调用它。因此,您可以使用它作为结束
var game = new Life([
[0, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 1]
]);
更多的澄清可在下面的链接和附加的文章
它可能会说self=this somewhere您确定这是整个代码示例吗<代码>自我。生命
是指在此代码之外定义的变量self
。在ES5和较旧的代码中,通常会使用模式var self=this
,以克服function
创建新上下文这一事实。这是迄今为止的代码,当我在控制台中运行它时,它工作得很好。。。它不应该起作用,因为您正在执行.prototype
,而不在定义
的上下文中。我只是在节点8中运行了它,但它不工作。你用的引擎是什么?我误读了你的代码,抱歉!谢谢你的回答。当我单独输入“生活”时,我确实看到了“自我”是窗口(难怪它是这样工作的),为了验证这个理论,如果我将它改为“自我1”,它就不起作用了(正如预期的那样)。
var game = new Life([
[0, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 1]
]);