js面向對象的一些初級知識總結~~

    javascript做爲一門解釋性腳本語言,有着其獨特的魅力.既具備函數編程的特性,又具備面向對象的特徵.之前的開發中,大可能是使用了javascript的函數式編程,最近,發現其的面向對象也有必定的優點,在較爲複雜的插件構建中,效果會很明顯. javascript

    其實,本質上javascript包括三部分,一部分是DOM編程,操做頁面中的元素,一部分是BOM編程,獲取瀏覽器的一些性能特徵,最後,一部分也就是其核心,對ECMA-262規則的實現.如今,總結一下面向對象的學習. java

    面向對象之一封裝: 編程

    原生形式的封裝: 瀏覽器

   建立了一個person的對象,這種方式比較繁瑣. 閉包

var person = {
   name:'小蘭',
   age : 23
};

alert(person.name);
     因此有了改進方式
var Person = function(name,age){
     return {
      name:name,
      age : age
     }
}
//建立了一個Person的類

//建立一個Person對象

var xiaoming = Person('小明',23);

alert(xiaoming.name);

    構造函數建立對象 函數式編程

  

var Person = function(name,age)
{
    this.name = name;
    this.age = age;
    eat = function(){
        alert('情人節怎麼樣勒?');
   }
 };

var xiaohong = new Person('小紅',23);
alert(xiaohong.name);

var xiaolan = new Person('小蘭',25);
alert(xiaolan.name);

可是,有個問題eat方法不屬於Person這個類公有,每次建立對象還必須 爲其開闢內存空間

alert(xiaohong.prototype.eat == xiaolan.prototype.eat)  false

   

 原型模式建立    每一個js對象都有一個對其原型的內部引用 函數

var Person = function(name,age)
{
    this.name = name;
    this.age = age;
};

prototype:原型上加的是對象不變的屬性,和方法
Person.prototype.eat = function(){
   alert('this is one day~');
};

var beili = new Person('貝利',34);

var mingren = new Person('鳴人',23);


alert(beili.prototype.eat == mingren.prototype.eat) true

封裝完成. 性能

new 關鍵詞,解釋:js中使用new時會建立一個空對象,做爲參數傳給function,若是 學習

function沒有return時就會返回this,因此不要在生成實例時,使用return,這就是''this關鍵字 this

關聯於其所在的做用域'

in 關鍵詞 用於查看對象中的變量;

for(var prop in Person)
{
   alert(prop);
}

//結果:
name age eat
  這是js中的類和對象,對於js面向對象的封裝,有個朋友推薦使用閉包~~不是很清楚!!
相關文章
相關標籤/搜索