2016-08-31 39 views
1

正则函数声明和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

这不是一个返回块。这是一个对象文字。 – slebetman

+0

如果注释掉正常函数并执行上面的代码typeof(myMother.changeName)返回函数。 – balamuruganv

+0

他们都是功能。从语言的角度来看没有区别。他们来自不同的范围,但是就是这样。 – vlaz

回答

1

如果你从一个函数返回一个对象,然后调用的是,与new一个构造函数,该函数的原this抛出离开,忽略和失去。换句话说,在这个世界上,this.firstName的价值永远不会再次获得。你想通过返回对象字面值来完成什么?

JavaScript中正常函数声明和内部返回块函数声明有什么区别?

差(假设你的意思方法声明)是正常的声明做了什么你通常会想象它会怎么做。 “内部返回阻止函数声明”覆盖并取消原始值this,而是用一种方法返回JUST THAT OBJECT,这可能不是您想要的。