JS高级程序设计笔记-对象基础

一、对象的类型

1、本地对象

(1)Object

(2)Function

(3)Array

* join()

* concat()

* slice()

* 模拟栈方法:push()+pop()

* 模拟队列方法:shift()+push()

* unshift():第一位添加

* reverse()

* sort()

* splice()

(4)String

(5)Boolean

(6)Number

(7)Date

(8)RegExp

(9)Error

(10)EvalError

(11)RangeError

(12)ReferenceError

(13)SyntaxError

(14)TypeError

(15)URIError

2、内置对象

(1)Global对象

拥有方法:

* encodeURI():处理完整的URI

* encodeURIComponent():处理URI的一个片段,对发现的所有非标准字符编码

* decodeURI()

* decodeURIComponent()

* eval()

属性:

undefined、NaN、Infinity、所有的本地对象

(2)Math对象

* Math.max()

* Math.min()

var arr = [2,3,5,8,10,50,23];
console.log(Math.max.apply(null,arr))//取数组中的最大值

* Math.abs():返回绝对值

* Math.ceil():向上舍入

* Math.floor():向下舍入

* Math.round():四舍五入

* Math.random():随机数

3、宿主对象

(1) BOM

(2)DOM

二、作用域

三、定义类或对象

1、工厂模式:函数内定义以及返回一个对象。

        // 工厂模式
        function showColor(){
            console.log(this.color)
        }
        function Factory(scolor){
            var obj = new Object();
            obj.color = scolor;
            obj.showColor = showColor;
            return obj;
        }
        var obj1 = Factory('red');
        obj1.showColor();    

 

2、构造函数方式:构造函数内部没有创建对象,使用this关键字。

3、原型方式:实例的属性指向的是对象时,被多个实例共享。

4、混合构造函数原型方式:用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。

        // 构造函数原型方式
        function Car(sdoors,stype){
            this.doors = sdoors;
            this.type = stype;
            this.drivers = ['a','b']
        }
        Car.prototype.showDoor = function(){
            console.log(this.doors);
        }
        var obj2 = new Car(1,'trunk');
        var obj3 = new Car(2,'car');
        obj2.drivers.push('c');
        obj2.showDoor();
        console.log(obj2.drivers);
        console.log(obj3.drivers);        

5、动态原型方式:与混合构造函数原型方式的区别在于,赋予对象方法的位置,动态原型方式将公用方法定义在构造函数内部;但需要一个标志(flag),判断如果flag未定义那么创建方法,并将flag赋值true;这样就可以实现创建的函数仅仅被创建并赋值一次。

    // 动态原型方法
        function Car(sdoors,stype){
            this.doors = sdoors;
            this.type = stype;
            this.drivers = ['a','b'];
            if(typeof Car.flag == 'undefined'){
                Car.prototype.showDoor = function(){
                console.log(this.doors);
                }
                Car.flag = true;
            }

        }
        var obj2 = new Car(1,'trunk');
        var obj3 = new Car(2,'car');
        obj2.drivers.push('c');
        obj2.showDoor();
        console.log(obj2.drivers);
        console.log(obj3.drivers);  

6、实例

 四、修改对象

1、创建新方法

2、重新定义已有方法

 1     Function.prototype.originString = Function.prototype.toString;//保存原始方法的指针
 2         Function.prototype.toString = function(){
 3             if(this.originString().length>10){
 4                 return "Function too long to display!"
 5             }else{
 6                 return this.originString();
 7             }
 8         };
 9         function fun1(){
10             alert('test');
11         }
12         console.log(fun1.toString());  //Function too long to display!

 

posted @ 2018-01-19 11:42  cocoyuanxile  阅读(154)  评论(0编辑  收藏  举报