首页 > 代码库 > javascript中的原型对象

javascript中的原型对象

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title></head><body>        <script type="text/javascript">        // 原型        // 构造函数的prototype属性的值        function Person() {            this.name = "adfs";        }        // 访问原型:        // console.log(Person.prototype);        // 给原型添加的方法        Person.prototype.say = function() {            // console.log("这事原型的方法");            console.log(this.name);        };        Person.prototype.name = "aaaaaaa";        // 表示非公开的方法, 可以使用,但是 可能存在问题        // Person.prototype._init = function() {};        // 通过构造函数来创建对象        var p = new Person();        // 通过p这个实例,来访问到原型中的方法或者是属性        p.say();        Person.prototype.say();        // 以下两种方式调用的区别:        // p.say();        // Person.prototype.say();        //         // 1 通过对象来调用方法是 通过属性搜索原则找到的方法,然后再调用        // 2 直接访问到方法,然后再调用的        // 3 方法内部的 this 指向不同        //         方法内部的this :谁调用的方法,this就是指向谁        // __proto__        // 还可以通过通向直接访问到原型        // 只要是带有 __ 就表示非标准的属性, 不能不再实际项目中使用        // 有些框架中写的方法的名字也带有下划线:         //         表示这些方法是再框架内部使用的        //         如果,你拿来使用,出问题了,框架不负责        // p.__proto__        console.log(Person.prototype === p.__proto__); // true        // 构造函数的prototype属性 和 对象的__proto__表示的就是同一个对象        // 只不过是 通过不同的方法来访问这个对象(原型)        p.__proto__.say();        // console.log(p.__proto__);        // 两个术语:        // prototype 原型属性        // __proto__ 原型对象        // 就好比是 o1和o2是两个变量,但是这两个变量就是同一个对象        // var o1 = {};        // var o2 = o1;    </script></body></html>

 

javascript中的原型对象