Javascript 对象、其构造函数及其方法之间的关系
这是John Resig的《学习高级JavaScript》中的第33篇。如果您能在这方面提供帮助,我将不胜感激 1) 从技术上讲,是Javascript 对象、其构造函数及其方法之间的关系,javascript,Javascript,这是John Resig的《学习高级JavaScript》中的第33篇。如果您能在这方面提供帮助,我将不胜感激 1) 从技术上讲,是ninja.changeName(“Bob”)“调用”函数ninja,还是立即转到this.changeName(name) 2) 调用ninja.changeName(“Bob”)后,函数ninja(name)中处理事件的顺序是什么 3) 此项变更的目的/功能是什么。变更名称(名称) 1) 它正在调用函数上的方法 2) 它只需通过setter更新自己的name属性
ninja.changeName(“Bob”)
“调用”函数ninja,还是立即转到this.changeName(name)代码>
2) 调用ninja.changeName(“Bob”)
后,函数ninja(name)中处理事件的顺序是什么
3) 此项变更的目的/功能是什么。变更名称(名称)
1) 它正在调用函数上的方法
2) 它只需通过setter更新自己的name
属性
3) 它是使用setter来更改属性。1)它正在调用函数上的方法
2) 它只需通过setter更新自己的name
属性
3) 这是使用setter来更改属性。这是一个非常好的问题)
- 在JS中,函数是对象,因此通过调用
ninja.changeName(“Bob”)
可以直接使用ninja的方法.changeName()
- 如果调用了
ninja.changeName
,则不会触发此方法之外的任何操作
this.changeName(名称)代码>-是构造函数操作,它们仅在创建时应用于ninja对象(用属性名扩展新创建的对象)
看看这是一个很好的问题)
- 在JS中,函数是对象,因此通过调用
ninja.changeName(“Bob”)
可以直接使用ninja的方法.changeName()
- 如果调用了
ninja.changeName
,则不会触发此方法之外的任何操作
this.changeName(名称)代码>-是构造函数操作,它们仅在创建时应用于ninja对象(用属性名扩展新创建的对象)
看看
1) 从技术上讲,是ninja.changeName(“Bob”)在“调用”函数ninja,还是会立即转到这个
它调用分配给使用var Ninja=new Ninja(“John”)创建的Ninja实例的changeName
属性的匿名函数代码>
2) 调用ninja.changeName(“Bob”)后,函数ninja(name)中处理事件的顺序是什么
运行该函数中的单个语句
3) 此项变更的目的/功能是什么。变更名称(名称)
它接受一个参数,并将该参数的值赋给调用该方法的Ninja
实例的name
属性
1) 从技术上讲,是ninja.changeName(“Bob”)在“调用”函数ninja,还是会立即转到这个
它调用分配给使用var Ninja=new Ninja(“John”)创建的Ninja实例的changeName
属性的匿名函数代码>
2) 调用ninja.changeName(“Bob”)后,函数ninja(name)中处理事件的顺序是什么
运行该函数中的单个语句
3) 此项变更的目的/功能是什么。变更名称(名称)
它接受一个参数,并将该参数的值赋给调用该方法的Ninja
实例的name
属性
1) 从技术上讲,它是
忍者。更改名称(“鲍勃”)“呼叫”忍者
功能忍者,还是去
立即更改此名称。更改名称(名称)
只能使用语法Ninja(..)
调用函数Ninja
。语法newninja(…)
并不完全调用该函数,而是将其用作新对象的构造函数。语法ninja.changeName(“Bob”)
调用通过ninja
构造函数附加到ninja
对象的changeName
属性的匿名函数ninja.changeName(“Bob”)
与ninja
函数“从技术上讲”关系不大。一旦对象ninja
被创建,那么ninja.changeName
和ninja
之间就没有任何关系了
回到你的问题:两者都不。它不会“调用”函数Ninja
,也不会转到this.changeName(name)
。它只调用函数ninja.changeName
,这是一个常规的匿名函数,由对象ninja
的属性引用
2) 曾经的忍者。改名(“Bob”)是
调用的顺序是什么
处理事件发生
内部功能忍者(姓名)
如上所述,两者之间没有关系。执行ninja.changeName(“Bob”)
对ninja.changeName
引用的匿名函数执行调用。构造函数ninja
设置了ninja.changeName
和匿名函数function(name){this.name=name;}
之间的关联,但这是它们之间的唯一关系
3) 到底是什么原因
此文件的目的/功能。更改名称(
姓名)
在构造函数中调用函数changeName
,显示可以在构造函数中调用方法。可以为对象创建setter,然后在构造函数中使用这些setter初始化对象的属性。这个例子是说教性的;在现实世界中,setter可能非常复杂,您必须使用它们来初始化对象。此外,如果不使用setter,创建setter有什么意义,如:
function Ninja(constructorArg) {
this.changeName = function(setterArg){
this.name = setterArg;
};
this.name = constructorArg; // I'm not using the setter I've just written
}
1) 从技术上讲,它是
忍者。更改名称(“鲍勃”)“呼叫”忍者
功能忍者,还是去
立即更改此名称。更改名称(名称)
<
function Ninja(constructorArg) {
this.changeName = function(setterArg){
this.name = setterArg;
};
this.name = constructorArg; // I'm not using the setter I've just written
}