javascript prototype

在这里插入图片描述

1. 读写
1.1 查询

读取对象属性:
1 step : 对象实例有吗?
2 step : 原型对象有吗?
3 step : 都无,undefined

1.2 写
1.2.1 值类型
实例对象没有该属性,原型对象有。拷贝一份到实例对象再修改,原型对象不变。

在这里插入图片描述

function Flower(){};
    Flower.prototype = {
    	constructor:Flower,
    	num:1,
    	talk: function (){
    		console.info("I am a Flower");
    	}
    }
    var f1 = new Flower();
    // f1.num=2;  修改
    console.info(f1);
1.2.2 引用类型

实例有则修改end。无则修改原型对象end,都无异常反馈end。
在这里插入图片描述

1.2.3 方法

和值类型一样,不会修改对象原型,拷贝一份到对象实例再修改。
在这里插入图片描述

    function Flower(){};
    Flower.prototype = {
    	constructor:Flower,
    	talk: function(){
    		console.info("I am a Flower");
    	}
    }
    var f1 = new Flower();
/*    f1.talk=function(){
       console.info("I am a cat");
    }*/
    console.info(f1);
    f1.talk();
2. 不建议共享对象数组

修改的是原型对象,不会拷贝到实例。共享建议是一些不会修改的数据,或修改会拷贝到实例再修改的属性。反之,午夜 debug …

3. 建议
  1. 私有成员(一般就是非函数成员)放到构造函数中
  2. 共享成员(一般就是函数)放到原型对象中
  3. 如果重置了 prototype 记得修正 constructor 的指向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值