首頁  >  文章  >  web前端  >  簡單分析javascript物件導向與原型_jquery

簡單分析javascript物件導向與原型_jquery

WBOY
WBOY原創
2016-05-16 15:57:571208瀏覽

本文主要內容參考來自JavaScript高階程式設計,物件導向與原型章節:

1、工廠模式

ECMAScript 可以透過工廠模式來建立物件:

//工厂模式
function createObject(name, age) {
  var obj = new Object();                  //创建对象
  obj.name = name;                      //添加属性
  obj.age = age;
  obj.run = function () {                    //添加方法
    return this.name + this.age + '运行中...';
  };
  return obj;                            //返回对象引用
};
var obj1 = createObject('Lee', 100);          //创建第一个对象
var obj2 = createObject('Jack', 200);          //创建第二个对象
//alert(obj1.run());                          //打印第一个对象实例的run()方法
//alert(obj2.run());                          //打印第二个对象实例的run()方法

//alert(typeof obj1);
//alert(typeof obj2);
alert(obj1 instanceof Object); //true
alert(obj2 instanceof Object); //true

透過工廠模式創建的對象,解決了重複實例化問題,但對象識別問題無法解決(所有對像都是Object),因此要想解決對象識別問題,我們採用下面的構造函數。

2、建構子

//构造函数创建
function Person(name,age){  //所有构造函数对象都是Object
  this.name=name;
  this.age=age;
  this.run=function(){
    return this.name+this.age+"ing...";
  };
};
var person1=new Person('zhu1',100);
var person2=new Person('zhu2',200);
alert(person1.run());
alert(person2.run());

alert(person1 instanceof Object); //ture
alert(typeof person2);         //Person
alert(person2 instanceof Person);  // true
var person3=new Object();
Person.call(person3,'zhu3',300);//对象冒充,person3是Object类型,冒充Person类型
alert(person3.run()); 

建構子中this:代表目前作用域物件的引用,如果在全域範圍this代表window對象,如果在建構函式體內,就代表目前建構子所宣告的物件。

建構函式方法,及解決了重複實例化問題,有解決了物件辨識問題,對比跟工廠方法不同之處可知:

1.建構函式方法沒有顯示的建立物件(new Object());

2.直接將屬性和方法值賦值給this;

3.沒有return 語句;

4.但是使用建構函式建立必須使用new運算子;

以上所述就是本文的全部內容了,希望大家能夠喜歡。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn