javascript 原型上的操作 区别
javascript 原型上的操作 区别
小张525 发表于1年前
javascript 原型上的操作 区别
  • 发表于 1年前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
    <script type="text/javascript" src="../jquery.js"></script>
    <script>
        
        var Book = function (id, name, price)
        {
            this.id = id;
            this.name = name;
            this.price = price;
        }


        var Book2 = function (id, name, price)
        {
            this.id = id;
            this.name = name;
            this.price = price;
        }


        // 在原型的基础上
        Book.prototype.display = function () {
            console.log(this.name);
        }


        // 直接替换原型对象
        Book2.prototype = {
            display: function ()
            {
                console.log(this.name);
            }
        }


        var _Book = new Book(1, 'javascript', 12);
        var _Book2 = new Book2(1, 'javascript', 12);

        console.log(_Book);
        console.log(_Book2);



        var Test = function () { };
        var _Test = new Test();
        console.log(_Test);


        // 如果在对象的原型上添加属性和方法, 那么他的constructor属性会指向到当前对象,
        console.log(_Book.constructor == Book);    // true
        console.log(_Book.constructor == Object);  // false;
        // 如果在直接替换原型对象,那么他的constructor属性会指向最原始的对象.
        console.log(_Book2.constructor == Object);  // true;
        console.log(_Test.constructor == Test);    // true;

        // 测试某个属性是否是自拥有的
        console.log("constructor" in _Test);  // true;
        console.log("constructor" in _Book2); // true;
        console.log(_Test.hasOwnProperty('constructor'));  // false 不是自拥有的属性,这个是继承过来的.
        console.log(_Book.hasOwnProperty('constructor'));  // false




        /*
            知识点总结:
            _Book:
            constructor:(id, name, price)
            display:()
            __proto__:Object


            _Book2:
            display: ()
            __proto__: Object


            1  在原型上追加方法时, 对象的构造函数是存在的,如果是替换原型对象,那么就会无构造函数,
            2  如果在原型上追加方法,那么他的构造函数是指向自己的,通过_Book,_Test的测试看到,
               如果直接替换原型对象,那么他的构造函数是指向object,
                
        */


    </script>
</head>
<body>

</body>
</html>

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 55
码字总数 30795
×
小张525
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: