JavaScript面向对象中定义成员方法的两种实现方式

作者:代码拾荒时间:2026-10-28 19:57:57浏览:373

本文详细解析JavaScript中定义对象成员方法的两种常见方式。第一种是在构造函数内部直接定义方法,确保每个实例拥有独立的方法引用;第二种是将函数定义在外部,通过赋值方式动态绑定到实例属性。文章对比了带括号与不带括号的赋值区别,并探讨了参数传递及内存占用的相关特性。

JavaScript定义成员方法的两种实现方式

本文通过具体实例深入解析JavaScript面向对象编程中成员方法的定义技巧,旨在为读者提供清晰的参考与学习思路。

在JavaScript面向对象编程中,定义成员方法主要涉及以下两种实现模式。

具体代码实现如下所示:

<script language="javascript" type="text/javascript">
function Person(name,age){
this.name = name;
this.age = age;
this.show = function(){
document.write(this.name+"今年"+this.age+"岁");
 }
}
var p1 = new Person("王美人",24);
p1.show();
</script>

构造函数内部定义方法的特性

对上述代码的关键点说明如下:


(1)该示例使用了构造函数来初始化对象;


(2)采用 `this.show=function()` 的方式在构造函数内部定义方法,这意味着每个通过 `new` 创建的对象实例都会拥有自己独立的该方法副本。如果希望某些特定实例单独拥有该方法,可以将函数定义在外部,然后将其引用传递或赋值给特定实例,具体见下文示例;


(3)在 `this.show` 所指向的 `function()` 内部,完全可以接收并处理参数。

外部函数动态绑定到实例

另一种方式是将函数定义在对象外部。由于JavaScript对象的属性和方法支持动态添加,因此可以采用以下定义策略:

具体代码实现如下:

<script language="javascript" type="text/javascript">
function Person(name,age){
this.name = name;
this.age = age;
}
function show(){
window.alert("hello,"+this.name);
}
var p1 = new Person("王美人",24);
p1.show1 = show;//注意,函数后面带()与不带()的区别。带括号表示将结果给p1.show1,而不带括号表示将该函数给p1.show1。
p1.show1();
</script>

此外,还可以采用匿名函数表达式的方式进行赋值:

具体代码实现如下:

p1.show1 = function show(){..................}

希望上述关于JavaScript程序设计的内容能对读者有所帮助。

作者最新文章