首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript:定义函数内部的函数

JavaScript:定义函数内部的函数
EN

Stack Overflow用户
提问于 2013-08-28 13:44:51
回答 5查看 868关注 0票数 1

在这个W3Schools实例中,我不知道changeName是如何工作的:

代码语言:javascript
复制
function person(firstname, lastname, age, eyecolor) {
    this.firstname = firstname;
    this.lastname = lastname;
    this.age = age;
    this.eyecolor = eyecolor;

    this.changeName = changeName;

    function changeName(name) {
        this.lastname = name;
    }
}
myMother = new person("Sally", "Rally", 48, "green");
myMother.changeName("Doe");
document.write(myMother.lastname);

http://jsfiddle.net/MrGe4/

为什么我们有this.changeName=changeName,然后是changeName的函数定义

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-28 13:52:26

它为changeName对象定义了一个方法person --但在某种程度上--以一种四通八达的方式,等效的(更好的)方法是:

代码语言:javascript
复制
this.changeName = function(name) {
  this.lastname = name;
}

(因此“请不要使用w3school”)

票数 4
EN

Stack Overflow用户

发布于 2013-08-28 13:49:41

这是您的代码(来自您所做的引用):

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
myMother=new person("Sally","Rally",48,"green");
myMother.changeName("Doe");
document.write(myMother.lastname);
</script>

</body>
</html>

键入此代码时:

代码语言:javascript
复制
function changeName(name)
{
this.lastname=name;
}

你基本上是在做一个函数。

当你这么做的时候

代码语言:javascript
复制
this.changeName=changeName;

您基本上是说“函数changeName (在RHS上)属于这个函数,即person。”(然而,person被用作对象)。

因此,当您看到由链接提供的代码时,全局代码定义了一个对象myMother,它通过myMother.changeName()访问changeName,就像您说的this.changeName = changeName

票数 1
EN

Stack Overflow用户

发布于 2013-08-28 13:51:43

This.changeName是一个属性。

this.changeName=changeName只是函数的声明。

代码语言:javascript
复制
//Here you create your Person Object
myMother=new person("Sally","Rally",48,"green");

//Here you affect the LastName "Doe" By calling the ChangeName function of the object Person
myMother.changeName("Doe");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18489735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档