zoukankan      html  css  js  c++  java
  • 简单原型

    1、简单原型

        function Person() {
        }
        Person.prototype = {
            name : "xiao A",
            age : 26,
            say : function () {
                alert("I am simple prototype function");        
            }
        }
        var p1 = new Person();
        alert(Person.prototype.constructor)     // function Object() { [native code] }
        for(attr in p1){
            alert(attr);        // name   age    say
        }

    上面的方法虽然在创建原型属性的时候比较便捷,但是他改变了 Person.prototype 的 constructor , 因此需要对上面的方法进行改造

    2 、方法一

        function Person() {
        }
        Person.prototype = {
            constructor : Person,
            name : "xiao A",
            age : 26,
            say : function () {
                alert("I am simple prototype function");
            }
        }
        var p1 = new Person();
        alert(Person.prototype.constructor)     // function Person() {  }
        for(attr in p1){
            alert(attr);        //    constructor    name   age    say
        }

    该方法实现了 在使用简单原型时,不改变 原型的构造器 即 Person.prototype 的 constructor ,他的缺点是 constructor 属性变成了 可枚举的属性,所以还需要对其进行改进

    3、 Object.defineProperty()  可以为原型对象重新加入构造器

        function Person() {
        }
        Person.prototype = {
            name : "xiao A",
            age : 26,
            say : function () {
                alert("I am simple prototype function");
            }
        }
    
        Object.defineProperty(Person.prototype,"constructor",{
            enumerable : false,             // 指定属性不可枚举
            value : Person                   // 指定 值
        })
    
        var p1 = new Person();
        alert(Person.prototype.constructor)     // function Person() {  }
        for(attr in p1){
            alert(attr);        //   name   age    say
        }

    4、原型的动态特性

        // 原型的动态特性
        function Person() {
        }
        var p1 = new Person();
        Person.prototype.say = function () {
            alert("我是原型特性")
        }
        p1.say();           //  我是原型特性
       function Person() {
       }
       var p1 = new Person();
        Person.prototype = {
            constructor : Person,
            say : function () {
                alert("我是原型的函数!")
            }
        }
        p1.say();                // p1.say is not a function
       function Person() {
       }
    
        Person.prototype = {
            constructor : Person,
            say : function () {
                alert("我是原型的函数!")
            }
        }
        var p1 = new Person();
        p1.say();                // 我是原型的函数!

    注意 : 简单原型使用的顺序(实例对象必须在原型对象之后创建)

  • 相关阅读:
    CSS:命名规范心得分享
    css中用一张背景图做页面的技术有什么优势?
    ie8 css hack
    简单介绍几个CSSReset的方法
    牛人也得看的CSS常识
    DIV+CSS网页布局常用的一些基础知识整理
    font-size:100%有什么作用?
    为什么无法定义1px左右高度的容器
    Div+CSS常见错误总结
    从数字千分位处理认识(?<=)、(?=)、(?:)
  • 原文地址:https://www.cnblogs.com/debra/p/7801420.html
Copyright © 2011-2022 走看看