在这个W3Schools实例中,我不知道changeName是如何工作的:
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的函数定义
发布于 2013-08-28 13:52:26
它为changeName对象定义了一个方法person --但在某种程度上--以一种四通八达的方式,等效的(更好的)方法是:
this.changeName = function(name) {
this.lastname = name;
}(因此“请不要使用w3school”)
发布于 2013-08-28 13:49:41
这是您的代码(来自您所做的引用):
<!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>键入此代码时:
function changeName(name)
{
this.lastname=name;
}你基本上是在做一个函数。
当你这么做的时候
this.changeName=changeName;您基本上是说“函数changeName (在RHS上)属于这个函数,即person。”(然而,person被用作对象)。
因此,当您看到由链接提供的代码时,全局代码定义了一个对象myMother,它通过myMother.changeName()访问changeName,就像您说的this.changeName = changeName
发布于 2013-08-28 13:51:43
This.changeName是一个属性。
this.changeName=changeName只是函数的声明。
//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");https://stackoverflow.com/questions/18489735
复制相似问题