没有合适的资源?快使用搜索试试~ 我知道了~
当我们使用原型链继承时,需要谨慎的定义原型上的方法和属性,因为这可能带来意外的结果。 一、谨慎的定义原型上的方法。 当我们想为一个构造函数的原型上定义一个方法时,一定要在更改原型后再定义,否则新的原型对象上不会有定义的这个方法,导致与我们预期的结果不同。例: function superObj(){} superObj.prototype.sayHi=function sayHi(){ console.log('hi'); }; superObj.prototype={ name:'Poly' }; var obj=new superObj(); obj.sayHi();//报错!!
资源推荐
资源详情
资源评论
详谈详谈js原型继承的一些问题原型继承的一些问题
当我们使用原型链继承时,需要谨慎的定义原型上的方法和属性,因为这可能带来意外的结果。
一、谨慎的定义原型上的方法。一、谨慎的定义原型上的方法。
当我们想为一个构造函数的原型上定义一个方法时,一定要在更改原型后再定义,否则新的原型对象上不会有定义的这个方
法,导致与我们预期的结果不同。例:
function superObj(){}
superObj.prototype.sayHi=function sayHi(){
console.log('hi');
};
superObj.prototype={
name:'Poly'
};
var obj=new superObj();
obj.sayHi();//报错!! superObj.sayHi is not a function
正确操作如下
function superObj(){}
superObj.prototype={
name:'Poly'
};
superObj.prototype.sayHi=function sayHi(){
console.log('hi');
};
var obj=new superObj();
obj.sayHi();// 'hi'
二、不要使用对象字面量给原型创建属性二、不要使用对象字面量给原型创建属性/方法。方法。
使用对象字面量,就会新创建一个对象,并把新对象的引用地址赋值给构造函数的prototype。例
function superObj(){}
superObj.prototype={
sayHi:function sayHi(){
console.log('hi');
}
}
正确操作如下:
function superObj(){}
superObj.prototype.sayHi=function sayHi(){
console.log('hi');
}
三、对象实例与原型存在直接对应关系。三、对象实例与原型存在直接对应关系。
意思就是说当一个对__proto__就会保存原型的引用地址,即使构造函数的prototype发生改变,也不会对之前创建的实例中的
__proto__产生影响。例
function superObj(){}
superObj.prototype.say=function() {
console.log('hello');
}
var obj=new superObj();
superObj.prototype={
say:function() {
console.log('world');
}
};
var obj2=new superObj();
obj.say();//'hello'
obj2.say();//'world'
四、最好不要给原型上定义值为引用类型的属性。四、最好不要给原型上定义值为引用类型的属性。
如果在原型上定义值为引用类型的属性,那么所有实例都会共享该属性值(引用类型值,指向同一个对象),当其中一个实例
修改该引用类型上的值或属性时,所有实例上的都会发生改变。因此值为引用类型的属性,最好在构造函数中定义。例
资源评论
weixin_38648037
- 粉丝: 0
- 资源: 929
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Linux nacos2.4.3压缩包
- C++20 规范,v s 2019 function 源码分析精简版
- html+css+js的宠物领养网站(响应式)
- go实现通过命令访问Kafka
- 数据中台(大数据平台)资源目录编制标准规范.pdf
- 极速浏览器(超快速运行)
- uniapp vue3 下拉菜单组件(dropdownMenu)
- 《全面解析图像平滑处理:多种滤波方法及应用实例》
- Kafka客户端producer/consumer样例
- OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功