国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在Js中創(chuàng)建對象的幾種方式

willin / 3522人閱讀

摘要:對象字面量的方式今年創(chuàng)建實例的發(fā)明者我是今年屬性是可以動態(tài)添加,修改的構(gòu)造函數(shù)無參構(gòu)造函數(shù)有參構(gòu)造函數(shù)我叫,今年歲實例化創(chuàng)建對象調(diào)用方法由于指針在對象實例的時候發(fā)生改變指向新的實例。是我的名字混合方式構(gòu)造函數(shù)原型我是,今年

javascript創(chuàng)建對象簡單的說,無非就是使用內(nèi)置對象或各種自定義對象,當(dāng)然還可以用JSON;方法很多,也能混合使用。

對象字面量的方式:

var person={
    name:"SF",
    age:25
    say:function(){
       alert(this.name+"今年"+this.age);
    }
};
person.say();

創(chuàng)建Object實例:

var my = new Object();
my.name = "SF"; //JavaScript的發(fā)明者
my.age = 25;
my.say = function() { 
  alert("我是"+this.name+"今年"+my.age);
}
my.say();

*屬性是可以動態(tài)添加,修改的

構(gòu)造函數(shù)

無參構(gòu)造函數(shù)

function Person(){}
var person = new Person(); 
person.name = "SF";
person.age = "25";
person.say = function() {
   alert("My name is " + person.name);
}
person.say();

有參構(gòu)造函數(shù)

function Person(name,age) { 
  this.name = name; 
  this.age = age; 
  this.say = function() { 
      alert("我叫" + this.name + ",今年" + this.age + "歲); 
  }
}
var my = new Person("SF",25); //實例化、創(chuàng)建對象
my.say(); //調(diào)用say()方法

由于this指針在對象實例的時候發(fā)生改變指向新的實例。這時新實例的方法也要重新創(chuàng)建,如果n個實例就要n次重建相同的方法。

工廠模式

function creatPerson(name,age){
   var person = new Object();
   person.name=name;
   person.age=age;
   person.say=function(){
   alert(this.name+"今年"+this.age+"歲");
  };
  return person;
 };
 var my = creatPerson("SF",25);//實例化
 my.say();//調(diào)用

原型方式

function Person(name,age){}
Person.prototype.name = "SF";
Person.prototype.age = 25;
Person.prototype.say = function() { 
  alert(this.name+"是我的名字");
}
var my = new Person();
my.say();
讓我們先了解下原型:

首先,每個函數(shù)都有一個prototype(原型)屬性,這個指針指向的就是Person.prototype對象。而這個原型對象在默認的時候有一個屬性constructor,指向Person,這個屬性可讀可寫。而當(dāng)我們在實例化一個對象的時候,實例my除了具有構(gòu)造函數(shù)定義的屬性和方法外(注意,只是構(gòu)造函數(shù)中的),還有一個指向構(gòu)造函數(shù)的原型的指針,ECMAScript中叫[[prototype]],這樣實例化對象的時候,原型對象的方法并沒有在某個具體的實例中,因為原型沒有被實例。所以這種模式定義的對象,在調(diào)用方法的時候過程:調(diào)用my.say();先看實例中有沒有,有調(diào)之,無追蹤到原型,有調(diào)之,無出錯,調(diào)用失敗。


  
上面代碼等同
function Person(name,age){}
Person.prototype={
    constructor:Person,   //必須手動設(shè)置這個屬性,否則沒有實例共享原型的意義了。
    name:"SF",
    age:25,
    say:function(){
        alert(this.name+"是我的名字");
    }
}
var my = new Person();
my.say();

混合方式 (構(gòu)造函數(shù)+原型)

function Person(name,age) {
   this.name = name;
   this.age = age;
}
Person.prototype.say = function() { 
  alert("我是"+this.name+",今年"+this.age);
}
var my = new Person("SF","25");
my.say();

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87029.html

相關(guān)文章

  • JS中創(chuàng)對象幾種設(shè)計模式

    摘要:構(gòu)造函數(shù)模式定義構(gòu)造函數(shù)模式是語言創(chuàng)建對象的通用方式。但兩種語言用構(gòu)造函數(shù)創(chuàng)建對象的方式略有不同在中沒有類的概念,函數(shù)即為一等公民,因此,不必顯式聲明某個類,直接創(chuàng)建構(gòu)造函數(shù)即可,類的方法和屬性在構(gòu)造函數(shù)中或原型對象上處理。 工廠模式 定義:工廠模式非常直觀,將創(chuàng)建對象的過程抽象為一個函數(shù),用函數(shù)封裝以特定接口創(chuàng)建對象的細節(jié)。通俗地講,工廠模式就是將創(chuàng)建對象的語句放在一個函數(shù)里,通...

    Galence 評論0 收藏0
  • JS中創(chuàng)函數(shù)幾種方式

    使用 函數(shù)聲明 創(chuàng)建函數(shù) 語法: * function 函數(shù)名([形參1,形參2...形參N]){ * 語句... * } */ function fun2(){ console.log(這是我的第二個函數(shù)~~...

    Joyven 評論0 收藏0
  • js 創(chuàng)對象幾種方式

    摘要:可以無數(shù)次地調(diào)用這個函數(shù),而每次它都會返回一個包含三個屬性一個方法的對象構(gòu)造函數(shù)模式原型模式組合使用構(gòu)造函數(shù)模式和原型模式創(chuàng)建自定義類型的最常見方式,就是組合使用構(gòu)造函數(shù)模式與原型模式。 JS中創(chuàng)建對象的主要模式有 工廠模式 工廠模式抽象了具體創(chuàng)建對象的過程例如 function?createPerson(name,?age,?job){ ????var?o?=?new?Object(...

    seanlook 評論0 收藏0
  • 文件上傳幾種方法——webuploader篇

    摘要:本來想把這幾種方法放在同一篇寫的,寫完,已經(jīng)很長了,想想還是分開的比較好。是由團隊開發(fā)的一個簡單的以為主為輔的現(xiàn)代文件上傳組件。因為是,就拿著的來用一下選擇文件的按鈕。也可以重寫上傳事件。如果不自動上傳的話,可以通過觸發(fā)。 本來想把這幾種方法放在同一篇寫的,寫完xhr,已經(jīng)很長了,想想還是分開的比較好。webuploader是由Baidu WebFE(FEX)團隊開發(fā)的一個簡單的以HT...

    Amos 評論0 收藏0
  • JavaScript幾種循環(huán)方式

    摘要:本教程解釋了現(xiàn)代中各種各樣的循環(huán)可能性目錄介紹提供了許多迭代循環(huán)的方法。引入了循環(huán),它結(jié)合了的簡潔性和破解能力注意使用。此循環(huán)在每次迭代中創(chuàng)建一個新范圍,因此我們可以安全地使用它而不是。 JavaScript提供了許多通過LOOPS迭代的方法。本教程解釋了現(xiàn)代JAVASCRIPT中各種各樣的循環(huán)可能性 showImg(https://segmentfault.com/img/bVbfH...

    Allen 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<