亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一個實例看懂JS四種創建對象方式的區別

標簽:
JavaScript

1. 概述

JS中常用的创建对象方式有四种:

  1. 对象字面量
  2. new Object()
  3. 构造函数
  4. Object.create()

这四种方式虽然都能创建对象,但是还是有区别的,接下来我们研究下。

2. 功能相同

先来看一个实例,我们使用4种方式创建4个对象。

		// 对象字面量
        var dog1 = {
            name: '大黄',
            age: 2,
            speak: function () {
                console.log("汪汪");
            }
        }
        // 使用Object
        var dog2 = new Object();
        dog2.name = "大黄";
        dog2.age = 2;
        dog2.speak = function () {
            console.log("汪汪");
        }
        // 使用构造函数
        function Dog(name, age) {
            this.name = name;
            this.age = age;
        }
        Dog.prototype.speak = function () {
            console.log("汪汪");
        };
        var dog3 = new Dog("大黄", 2);
        // 使用Object.create
        var dog4 = Object.create(dog1);

这4个对象都是有name、age两个属性和speak一个方法,我们来测试下:

	 	console.log(dog1.name + dog1.age);
        dog1.speak();
        console.log(dog2.name + dog2.age);
        dog2.speak();
        console.log(dog3.name + dog3.age);
        dog3.speak();
        console.log(dog4.name + dog4.age);
        dog4.speak();

执行结果如下,可见他们的功能是一样的。
图片描述

3. 结构不同

虽然使用起来功能一样,但是实际这4个对象的结构并不是一样的,我们继续执行以下代码:

		console.log(dog1);
        console.log(dog2);
        console.log(dog3);
        console.log(dog4);

执行结果如下:

可见,对象字面量和new Object方式创建的对象结构是一样的。

使用构造函数创建的对象,speak方法是在其原型上的。

而使用Object.create创建的对象,原对象的属性和方法都会挂到新对象的原型上。
图片描述

4. 小结

使用没区别,结构有区别,还是要加以区分的。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
軟件工程師
手記
粉絲
1.5萬
獲贊與收藏
1524

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消