Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对不同的名称做了新的修改_Javascript - Fatal编程技术网

javascript对不同的名称做了新的修改

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) {

我理解self这个词在javascript中没有特殊意义。在下面的代码中,如果一个人写的是var Life=function(…),这是很清楚的,但作者决定写var_u2;=self.Life=function(…)。虽然我理解var uu部分(因此在内部,它可以用较短的名称来引用samething),但我没有得到self.Life(而不是Life)。。有人能解释一下吗

(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]
]);