JS中多種方式創(chuàng)建對(duì)象詳解
1.內(nèi)置對(duì)象創(chuàng)建
var girl=new Object(); girl.name='hxl'; console.log(typeof girl);
2.工廠模式,寄生構(gòu)造函數(shù)模式
function Person(name){
var p=new Object();//內(nèi)部進(jìn)行實(shí)例化
p.name=name;
p.say=function(){
console.log('my name is '+ p.name);
}
return p;//注:一定要返回
}
var girl=Person('haoxioli');
girl.say();
3.構(gòu)造函數(shù)創(chuàng)建
var Product=function(name){
this.name=name;
this.buy=function(){
console.log('我衣服的牌子是'+this.name);
}
}
var pro=new Product('真維斯');
pro.buy();
4.原型創(chuàng)建,缺點(diǎn):實(shí)例中的每個(gè)屬性有可能會(huì)不一樣
var Role=function(){}
Role.prototype.name={nickName:'昵稱(chēng)'};
var boy=new Role();
boy.name.nickName='劉曉兵';
console.log(boy.name.nickName);//劉曉兵
var girl=new Role();
girl.name.nickName='郝曉利';
console.log(boy.name.nickName);//郝曉利,因?yàn)閷?shí)例對(duì)象可以修改原型中的引用對(duì)象的值
console.log(girl.name.nickName);//郝曉利
5.混合模式:原型+構(gòu)造,可以把不讓實(shí)例修改的屬性放到構(gòu)造函數(shù)中,可以修改的放原型中
var Role=function(){
this.name={nickName:'aaa'};
}
Role.prototype.age=30;
var boy=new Role();
boy.name.nickName='boy';
console.log(boy.name.nickName);//boy
var girl=new Role();
girl.name.nickName='girl';
console.log(boy.name.nickName);//boy,實(shí)例不會(huì)修改構(gòu)造函數(shù)中的值
console.log(girl.name.nickName);//girl
6.字面量形式
var cat={
name:'lucy',
age:3,
sex:'母'
};//將對(duì)象轉(zhuǎn)換成字符串
console.log(JSON.stringify(cat));//{"name":"lucy","age":3,"sex":"母"}
var dog='{"name":"john","sex":"公"}';
console.log(JSON.parse(dog).name);//將字符串轉(zhuǎn)為對(duì)象
7.拷貝模式
function extend(tar,source){
for(var i in source){
tar[i]=source[i];
}
return tar;
}
var boy={name:'醉俠客',age:20};
var person=extend({},boy);
console.log(person.name);
8.第三方框架
//先引入包
<script src='js/base2.js'></script>
//base2框架,Base.extend及constructor都是固定用法
var Animal=Base.extend({
constructor:function(name){
this.name=name;
},
say:function(meg){
console.log(this.name+":"+meg);
}
});
new Animal('lily').say('fish');
另一個(gè)第三方框架
<script src='js/simplejavascriptinheritance.js'></script>
//simplejavascriptinheritance框架,Class.extend及init都是固定用法
var Person=Class.extend({
init:function(name){
this.name=name;
}
});
var p=new Person();
p.name='over';
console.log(p.name);
以上這篇JS中多種方式創(chuàng)建對(duì)象詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- js中創(chuàng)建對(duì)象的幾種方式
- js創(chuàng)建對(duì)象幾種方式的優(yōu)缺點(diǎn)對(duì)比
- javascript創(chuàng)建對(duì)象、對(duì)象繼承的實(shí)用方式詳解
- 學(xué)習(xí)javascript面向?qū)ο?掌握創(chuàng)建對(duì)象的9種方式
- JavaScript創(chuàng)建對(duì)象的方式小結(jié)(4種方式)
- js面向?qū)ο笾R?jiàn)創(chuàng)建對(duì)象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- js創(chuàng)建對(duì)象的方式總結(jié)
- js中創(chuàng)建對(duì)象的幾種方式示例介紹
- js創(chuàng)建對(duì)象的幾種常用方式小結(jié)(推薦)
- JS對(duì)象創(chuàng)建的幾種方式整理
相關(guān)文章
JavaScript實(shí)現(xiàn)獲取圖片文件真實(shí)格式的示例代碼
每種格式的圖片,都有自己特有的優(yōu)缺點(diǎn)以及數(shù)據(jù)結(jié)構(gòu),本篇博文的目的就是基于不同格式的圖像二進(jìn)制數(shù)據(jù),獲取到圖片的真實(shí)格式,感興趣的可以了解一下2023-02-02
漫談JS引擎的運(yùn)行機(jī)制 你應(yīng)該知道什么
javascript 從定義到執(zhí)行,你應(yīng)該知道的那些事,本文為大家一一列舉,希望對(duì)大家的學(xué)習(xí)有所幫助2016-06-06
javascript顯示動(dòng)態(tài)時(shí)間的方法匯總
本文給大家匯總介紹了3種javascript實(shí)現(xiàn)動(dòng)態(tài)顯示時(shí)間的方法及詳細(xì)示例,有需要的小伙伴可以參考下2018-07-07
JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法
這篇文章主要介紹了JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法,涉及javascript操作圖片翻轉(zhuǎn)的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
JavaScript數(shù)組排序的六種常見(jiàn)算法總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組排序的六種常見(jiàn)算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用JavaScript數(shù)組具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Javascript Function.prototype.bind詳細(xì)分析
這篇文章主要介紹了Javascript Function.prototype.bind詳細(xì)分析的相關(guān)資料,需要的朋友可以參考下2016-12-12
javascript遍歷json對(duì)象的key和任意js對(duì)象屬性實(shí)例
下面小編就為大家?guī)?lái)一篇javascript遍歷json對(duì)象的key和任意js對(duì)象屬性實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03

