js面向對象代碼實例

一切皆對象(原始值+對象)

基本類型:字符串、數字、佈爾、數組、對象、null、undefined

創建對象的三種方式

1、通過new關鍵字

var obj=new Object();

2、通過對象字面量

1)簡單字面量

var obj={};

2)嵌套字面量

var obj={
    name:'ll',
    age:23,
    todo:function(){}
}

3、構造函數

(區別一下函數聲明和函數表達式)

      console.log(add(2,5));
      function add(a,b){
        return a+b;
      };//函數聲明:在聲明前即可使用
      var add1 = function(a,b) {
        return a+b;
      };
      add1(3,4);//函數表達式

構造函數

 function Person(name,age) {
        this.name = name;
        this.age = age;
        this.todo = function() {
          return this.name;
        }
      }
      var aa = new Person('sonia',20);
      var bb = new Person('cole',23);

構造函數和普通函數的區別

1)this指向
構造函數的this指向創建的對象實例上
普通函數函數的調用者
2)調用方式
構造函數 new
3)命名方式
構造函數首字母大寫

關於屬性的操作

1、獲取或設置屬性 ./[]

var obj = {};
obj.name = 'll';
obj['age'] = 22;

區別:.是取自身的屬性,[]可以是變量

例子:

var o = {};
o.name = 'xxx';
var nameA ='name';
console.log(o['nameA']);//xxx
console.log(o[nameA]);//undefined

2、屬性的刪除

delete o.name;

3、檢測屬性三種方式

1)in運算符

var o = {};
o.name = 'xxx';
o.age = 'undefined'
console.log('name' in o);

2)hasOwnProperty()

var o = {};
o.name = 'xxx';
o.age = 'undefined';
console.log(o.hasOwnProperty('name'));

3)!=undefined(不推薦)

var o = {};
o.name = 'xxx';
o.age = 'undefined'
console.log(o.age != 'undefined' );  

4、枚舉

遍歷對象,可以取到key,也可以取到value

var o = {x:1,y:2,z:3};
var a;
for (a in o) {console.log(a)};  // x y z
for (a in o) {console.log(o[a])};    //  1 2 3
遍歷數組:可以取到索引
var arr =[{x:1},{y:2},{z:3}];
for (a in arr ){console.log(a)}   // 0 1 2

遍歷數組的方法

//同步:阻塞
for(var i = 0;i<10; i++){

}
 //異步:非阻塞
 var  data = msg;
$.each(data,function(index,item) {

 })

5、序列化對象

var o2 = {x:1,y:2,z:3};
console.log(JSON.stringify(o2));
JSON.parse();//深拷貝(完全獨立的)

淺拷貝(對象和數組都是淺拷貝)像影子

例:

var o3 = {x:1,y:2,z:3};
var p = o3;
o3.x = 111;
console.log(p);  //{x:111,y:2,z:3}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *