Javascript中正常函数声明和内部返回块函数声明之间的区别

时间:2016-08-31 06:43:24

标签: javascript

Javascript中正常函数声明和内部返回块函数声明之间有什么区别。

代码正常函数名称:updatename,函数名称:changeName

function person(firstName,lastName,age,eyeColor) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;

    this.updatename = function (name) {
        this.lastName = name;
    }

    return {

        'changeName' :  function (name) {
            this.lastName = name;
        }
    }; 

}
var myMother = new person("Sally","Rally",48,"green");

console.dir(myMother);

console.log(typeof(myMother.changeName));

console.log(typeof(myMother.updatename));

myMother.changeName("Doe");

1 个答案:

答案 0 :(得分:1)

如果从函数返回一个对象,然后将其作为带有new的构造函数调用,则该函数的原始this为THROWN AWAY AND IGNORED AND LOST FOREVER。换句话说,this.firstName的价值在这个世界上再也无法获得。你想通过返回那个对象字面来完成什么?

  

JavaScript中的普通函数声明和内部返回块函数声明有什么区别?

差异(假设您的意思是方法声明)是正常声明执行您通常会想象的那样。 "内部返回块函数声明"覆盖并取消this的原始值,而是使用单个方法返回JUST THAT OBJECT,这可能不是您想要的。