ホームページ > ウェブフロントエンド > jsチュートリアル > JS_javascriptスキルでオブジェクトを作成するさまざまな方法の詳細な説明

JS_javascriptスキルでオブジェクトを作成するさまざまな方法の詳細な説明

WBOY
リリース: 2016-05-16 15:08:32
オリジナル
1175 人が閲覧しました

1. 組み込みオブジェクトの作成

var girl=new Object(); 
  girl.name='hxl'; 
  console.log(typeof girl); 
ログイン後にコピー

2.ファクトリーパターン、寄生コンストラクターパターン

function Person(name){ 
    var p=new Object();//内部进行实例化 
    p.name=name; 
    p.say=function(){ 
      console.log('my name is '+ p.name); 
    } 
    return p;//注:一定要返回 
} 
var girl=Person('haoxioli'); 
girl.say(); 
ログイン後にコピー

3. コンストラクターの作成

var Product=function(name){ 
    this.name=name; 
    this.buy=function(){ 
      console.log('我衣服的牌子是'+this.name); 
    } 
} 
  var pro=new Product('真维斯'); 
  pro.buy(); 
ログイン後にコピー

4.プロトタイプの作成、欠点: インスタンス内の各属性が異なる可能性があります

var Role=function(){} 
  Role.prototype.name={nickName:'昵称'}; 
  var boy=new Role(); 
  boy.name.nickName='刘晓兵'; 
  console.log(boy.name.nickName);//刘晓兵 
  var girl=new Role(); 
  girl.name.nickName='郝晓利'; 
  console.log(boy.name.nickName);//郝晓利,因为实例对象可以修改原型中的引用对象的值 
  console.log(girl.name.nickName);//郝晓利 
ログイン後にコピー

5.混合モード: プロトタイプ + コンストラクター。インスタンスによって変更できないプロパティをコンストラクターに配置し、変更できるプロパティをプロトタイプに配置できます。

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,实例不会修改构造函数中的值 
  console.log(girl.name.nickName);//girl 
ログイン後にコピー

6.リテラル形式

var cat={ 
    name:'lucy', 
    age:3, 
    sex:'母'
  };//将对象转换成字符串 
  console.log(JSON.stringify(cat));//{"name":"lucy","age":3,"sex":"母"} 
  var dog='{"name":"john","sex":"公"}'; 
  console.log(JSON.parse(dog).name);//将字符串转为对象 
ログイン後にコピー

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'); 
ログイン後にコピー

別のサードパーティ フレームワーク

<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 でオブジェクトを作成するためのさまざまな方法に関する上記の詳細な説明は、エディターによって共有されたすべての内容です。参考にしていただければ幸いです。また、Script Home をさらにサポートしていただければ幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート