js 原型一(概念和作用)

原型的概念和作用

描述原型的概念前,请诸位先看如下代码

      function Person(name, age) {
           this.name = name;
           this.age = age;
           this.sayHi = function() {
           console.log('Hi, meimei,go play.');
           };      
       }

       var zs = new Person('张三', 19);
       var ls = new Person('李四', 20);

       zs.sayHi();
       ls.sayHi();

       console.log(ls.sayHi === zs.sayHi); //false

这说明在内存中存在了两个逻辑功能相同的sayHi函数,这是冗余的代码,更会造成内存的浪费,而用户开启大量应用程序的时候,只会给我们网页留很少很少的内存。
这个时候,我们就需要把这个sayHi函数放在原型上。原型就是用来放共享数据,方法的地方。

原型的概念定义为:所谓原型就是指函数的prototype属性所引用的对象,这个对象就是原型。
原型的作用1:实现对象之间的数据共享。2.在es6之前,没有class的情况下,模拟面向对象,构造函数中放私有属性,原型上放公有属性,一般为方法。

这时,我们上述的代码可以改造成如下的样子

      function Person(name, age) {
            this.name = name;
            this.age = age;         
        }

        Person.prototype.sayHi = function() {
            console.log('Hi, meimei,go play.');
        };

        var zs = new Person('张三', 19);
        var ls = new Person('李四', 20);

        zs.sayHi();
        ls.sayHi();

        console.log(ls.sayHi === zs.sayHi); //true

**获取原型的方法:1.函数.prototype;2.对象._ proto (如果当前浏览器不支持. proto _,那么就通过对象的构造函数找:.constructor.prototype;
原型本身是一个对象。

此外,在es5中,还提供了一个比较简便的,不需要写构造函数等原型创建对象方法:object.create。

var parent = {say: function() {console.log('nihao');}};

var np = Object.create(parent);

// 相当如下创建对象方法
function F() {}
F.prototype = parent;
var np = new F;

你可能感兴趣的:(js 原型一(概念和作用))