Javascript漂流記(上)__對象、包裝類

一、對象
    1、創建一個對象,對象有一些屬性和方法。

            var obj = {
                name : 'object',
                age : 20,
                gender : 'bisexual',
                difficult : function(){
                    console.log('你能把我咋地!');
                    this.age--;
                },
                length: function(){
                    console.log('大丈夫能屈能伸');
                    this.age++;
                }
            }

           增:obj.father = 'Javascript';
           刪:delete obj.name;
           改:obj.gender = 'female';
           查:console.log(obj.age);
           當訪問一個對象沒有的屬性,返回undefined。
    2、對象的創建方法:
          1、plainObject,對象字面量/對象直接量,參照上面代碼。
          2、構造函數(大駝峯式命名)
                1.系統自帶:var obj = new Object();
                2.自定義方法,看下圖代碼。

            function CarManufacture(color,seat){
                this.color = color;
                this.seat = seat;
                this.name = 'BMW';
                this.height = '1400';
                this.weight = 1000;
                this.health = 100;
                this.run = function(){
                    this.health--;
                }
            }
            var car1 = new CarManufacture('red','leather');
            var car2 = new CarManufacture('yellow','wood');

                一個工廠生產出兩臺一模一樣的車,car1和car2,他們可以隨意調用自己的屬性和方法,互不相干。
         3、構造函數內部原理:
              1.在函數體最前面隱式var this = {};
              2.執行this.xxx = xxx;
              3.最後隱式return this;

            function Person(name,height){
                //var this = {}
                this.name = name;
                this.height = height;
                this.say = function(){
                    console.log(this.say);
                }
                //return this;
                return {};//return引用值可以搗亂,但return原始值影響不了。
            }

            var person1 = new Person('Jack',180);
            var person2 = new Person('Tom',160);


二、包裝類:
       屬性和方法專屬對象,原始值是堅決沒有屬性和方法的!!!
       數字,字符串,布爾都可以new。但undefined和null沒有這種操作,這也是他倆不能調用toString的原因吧
       var num = new Number(123);
       var str = new String('abcd');
       var bol = new Boolean('true');  

            var str = 'abc';
            str += 1;
            var test = typeof(str);//test == 'string'
                //隱式new String(test).length == 6    delete
            if(test.length == 6){
                test.sign = 'typeof的返回結果可能爲String';
                //隱式new String(test).sign = 'typeof的返回結果可能爲String'   delete!!!
            }
                //隱式new String(test).sign = undefined
            console.log(test.sign);//undefined

以上內容屬二哥原創,整理自 "渡一教育Javascript課程" ,一個值得推薦的"渡一教育"。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章