創建js對象_new+構造函數

1、js面向對象

// 編程語言:類、對象。封裝、繼承、多態
// 編程思想:構造函數(相當于js中的類)、對象

var obj1 = new Object();
obj1.name = "張三";
obj1.sayHi = function () {
    alert("hello");
};

var obj2 = {
    name: "張三",
    age: 12,
    syaHi: function () {
        alert("hello");
    }
}

// 通過函數(構造函數)創建對象:工廠模式
function CreatPerson (name,age) {
    // 創建一個空的局部對象
    var person = {};
    // 給這個局部對象添加新的屬性、方法
    person.name = name;
    person.age = age;
    person.sayHi = function () {
        alert("hello");
    };
    
    // 把新對象返回出去,否則函數外部無法獲取到這個對象
    return person;
    
}

// 通過調用函數來創建對象
// 弊端:系統無法判斷該對象是由哪個構造函數創建出來的
var obj3 = CreatPerson("宋吉吉", 12);

console.log(obj3 instanceof CreatPerson);       //false


var arr = new Array();
console.log(arr instanceof Array);              //true

var obj4 = new CreatPerson("馬容易劈腿",23);
console.log(obj4 instanceof CreatPerson);       //false

2、new構造函數創建

// 1、創建出對象的構造函數
function CreatPerson (name,age){
    // 把對象的屬性、方法掛靠在this指針身上,當調用該函數創建對象時,this指針
       就指向這個新對象,掛靠在this上的屬性、方法也就被添加進這個對象
    this.name = name;
    this.age = age;
    this.sayHi = function () {
        // 此處的this也指向創建出的對象
        alert(this.name + "hello");
    };
    
}

// 2、通過new調用構造函數來創建對象
var per1 = new CreatPerson('奧斯特洛夫斯基',80);
per1.sayHi();

console.log(per1 instanceof CreatPerson);

var per2 = new CreatPerson('奧利奧',3);

// 判斷per1和per2的sayHi方法是否是同一塊內存
console.log(per1.sayHi == per2.sayHi);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 博客內容:什么是面向對象為什么要面向對象面向對象編程的特性和原則理解對象屬性創建對象繼承 什么是面向對象 面向對象...
    _Dot912閱讀 1,454評論 3 12
  • 普通創建對象和字面量創建對象不足之處:雖然 Object 構造函數或對象字面量都可以用來創建單個對象,但這些方式有...
    believedream閱讀 2,435評論 2 18
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 時間是極好的東西,原諒了不可原諒的過去曾經過不去的,也許想回到之前的時光,但是一轉眼才發現過去的時光已經溜走...
    女王范爆棚閱讀 602評論 0 0
  • 今天是5月24日,天啊日子實在太快了,轉眼我就快來了倆個月了。 Day one 關鍵詞:簡潔優雅 官博idea也有...
    福爾摩洋閱讀 323評論 0 0