我对这两个javascript案例有一些疑问:

function some() {
    this.some2 = function() {//this is associated with own object(Correct?)
        console.log('some2');
    }
}

var __s1 = new some();
__s1.some2();//Allright, this do the work;
//some().some2();//This not work


此声明类型具有技术名称吗?对象模式?

另一个类似的情况是:

function some() {
    return {
        some2: function() {
            console.log('some2');
        }
    }
}

var __s2 = new some();
__s2.some2(); // Right, this work;
some().some2(); //Also work ... Ok, "some()" returns a object that contain
                //the some2().


第二种情况,也有技术名称吗?

他们之间最好的情况是什么?

最佳答案

第一个是使用原型。调用new some()将创建一个新对象,在函数执行期间将this设置为该对象,然后返回新对象。在这种情况下,调用some()是没有意义的,因为在执行this时将没有任何内容可以将some设置为(尽管该函数仍会执行)。

第二种情况是返回对象的普通函数。没有技术名称。

与第二种情况类似,称为“闭包”。你可以做

function some() {
    return function() {
        console.log('some2');

    }


然后做

var s3= some();
s3() //prints some2

08-25 23:43