js使用原型对象(prototype)需要注意的地方
关于JavaScript中原型对象(prototype)的使用注意事项
在JavaScript中,原型对象是一个核心概念,它允许我们实现对象的继承和共享方法。在使用原型对象时,有一些地方需要注意。以下是对此的详细解读和实例演示。
让我们通过一个简单的构造函数和原型对象的示例来开始。
```javascript
function CreateObj(uName, uAge) {
this.userName = uName;
this.userAge = uAge;
}
CreateObj.prototype.showUserName = function() {
return this.userName;
}
CreateObj.prototype.showUserAge = function() {
return this.userAge;
}
```
在这个示例中,我们定义了一个构造函数CreateObj和两个方法showUserName和showUserAge在CreateObj的原型上。这种方式虽然没有问题,但每次扩展方法都需要写一次原型对象,稍显冗余。我们可以选择将原型对象作为一个字面量对象来扩展所有的方法。这样做可以达到同样的效果,但更为简洁。例如:
```javascript
CreateObj.prototype = {
showUserAge: function() {
return this.userAge;
},
showUserName: function() {
return this.userName;
}
}
```
```javascript
CreateObj.prototype = {
constructor: CreateObj, // 设置正确的constructor引用
showUserAge: function() { / ... / },
showUserName: function() { / ... / }
}
```另外一点需要注意的是,我们先实例化对象再在原型对象上扩展方法,实例对象是否能正常调用这些扩展的方法。答案是肯定的。JavaScript会在实例对象上找不到方法时,会去原型链上寻找。即使我们先创建了实例对象,再扩展原型对象上的方法,实例对象仍然可以调用这些方法。这为我们在开发过程中提供了很大的灵活性。理解和正确使用JavaScript的原型对象对于编写高效、可维护的代码至关重要。深入理解JavaScript中的原型链与对象创建
在JavaScript中,对象的创建与其原型链息息相关。让我们一起如何通过原型链来创建对象,并理解其中的深层含义。
让我们看一个简单的例子。我们可以定义一个名为CreateObj的构造函数,并使用它创建对象。我们为其添加一些属性和方法。
```javascript
function CreateObj(uName, uAge) {
this.userName = uName;
this.userAge = uAge;
}
```
使用上述构造函数创建的对象有一个特点:每个对象都有一个内部属性__proto__,它指向其构造函数的prototype属性。这意味着我们可以通过原型链来访问原型上的属性和方法。例如,我们可以为CreateObj的原型添加一个showUserName方法:
```javascript
CreateObj.prototype.showUserName = function(){
return this.userName;
}
```
接下来创建一个新的CreateObj实例obj1并调用showUserName方法:
```javascript
var obj1 = new CreateObj('ghostwu', 22);
console.log(obj1.showUserName()); // 输出 "ghostwu"
```
```javascript
CreateObj.prototype = {
showUserName : function(){
return this.userName; // 报错,因为obj1无法找到showUserName方法。
}
}
// var obj1 已经存在,它的__proto__已经指向原来的原型对象。无法改变。所以调用会报错。
编程语言
- js使用原型对象(prototype)需要注意的地方
- PHP简单获取随机数的常用方法小结
- PHP解密Unicode及Escape加密字符串
- JavaScript使用RegExp进行正则匹配的方法
- mysql触发器之触发器的增删改查操作示例
- PHP实现判断二叉树是否对称的方法
- 新手把mysql装进docker中碰到的各种问题
- JS双击变input框批量修改内容
- 使用vue-infinite-scroll实现无限滚动效果
- JS常用算法实现代码
- 用asp实现文件浏览、上传、下载的程序
- 关于获取DIV内部内容报错的原因分析及解决办法
- JS实现点击生成UUID的方法完整实例【基于jQuery】
- PHP中substr_count()函数获取子字符串出现次数的方法
- jQuery-mobile事件监听与用法详解
- 如何编写jquery插件