对象

Posted linfang.zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象相关的知识,希望对你有一定的参考价值。

1、原型的弊端

    function Person() {
    }
    Person.prototype = {
        constructor : Person,
        name : zs,
        age : 20,
        friends : [王五,赵六]
    }
    var p1 = new Person();
    var p2 = new Person();
    p2.friends.push("xiao A");
    alert(p1.friends);          // 王五,赵六,xiao A
    alert(p2.friends);          // 王五,赵六,xiao A
    // 原型的属性和方法被所有的对象所共享

改进方法一  : 

2、组合原型和构造函数式

    function Person2(name, age, friends) {
        this.name = name;
        this.age = age;
        this.friends = friends;
    }
    Person2.prototype = {
        constructor : Person2,
        sayName : function () {
            alert(this.name);
        }
    }
    var p3 = new Person2("张三",20,["王五","赵六"]);
    var p4 = new Person2("李四",26,["王五","赵六","浅浅"])
    alert(p3.friends)           // 王五,赵六
    p3.sayName();               // 张三
    alert(p4.friends)           // 王五,赵六,浅浅
    p4.sayName();               // 李四

3、动态原型模式

    // 动态原型模式  (将代码都封装到一起)
    function Person3(name,age,friends) {
        this.name = name;
        this.age = age;
        this.friends = friends;
        if(typeof this.sayName != "function" ){
            Person3.prototype.sayName = function () {
                alert(this.name)
            }
        }
    }
    var p5 = new Person3("haha",20,[aa,bb]);
    var p6 = new Person3("heihei",22,[aa,bb,cc]);
    alert(p5.sayName == p6.sayName)             // true   说明 sayName 方法只被声明了一次

4、稳妥构造函数式

    // 稳妥构造函数式 (应用在非常安全的环境中)
    // 1、没有公共属性    2、不能使用 this 对象
    function Person4(name,age,job) {
        // 创建一个要返回的对象发
        var obj = new Object();
        // 创建一些属性,属性为私有属性,函数外不能访问
        var name = name;
        obj.sayName = function () {         // 函数里定义方法来访问函数内的属性
            alert(name);
        }
        return obj;
    }
    var p7 = new Person4("aa");
    p7.sayName();           // aa

 

以上是关于对象的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

使用嵌套片段和动画对象

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

jquery 对象的 heightinnerHeightouterHeight 的区别以及DOM 元素的 clientHeightoffsetHeightscrollHeightoffset(代码片段

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段