一段简单代码体验Js中的引用和prototype

代码:

<!-- 對js中引用以及protoptype的探索 -->
<script>

    function pro_test() {

    }
    pro_test.prototype = {
        data: 1
    }

    p1 = new pro_test()

    p2 = new pro_test()
    p1.data = 2

    p3 = new pro_test()
    p2.data = 3

    p4 = new pro_test()

    console.log('' + p1.data + p2.data + p3.data + p4.data)
    // 結果為2311 23為實例對象對prototype的覆蓋 

    pro_test.prototype = {
        data: 5
    }

    console.log('' + p1.data + p2.data + p3.data + p4.data)
    // 結果為2311 pro_test 此時的prototype指向新的data=5的object
    // 但原先的pro_test中的prototype的指針仍指向當初data=1的object

    p5 = new pro_test()

    console.log('' + p1.data + p2.data + p3.data + p4.data + p5.data)
    // 結果為23115,新的pro_test實例中的prototype指針指向的是data=5的新實例

    function pro_test_next() {

    }
    pro_test_next.prototype = pro_test.prototype
    pro_test_next.prototype.data = 9

    p6 = new pro_test()

    console.log('' + p1.data + p2.data + p3.data + p4.data + p5.data + p6.data)
	// 結果為231199,pro_test_next中的prototype指向的是同一個實例
	// 因此通過對pro_test_next指針指向的實例的修改會影響到pro_test實例中
</script>

运行结果

2311
2311
23115
231199
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值