原型:prototype 改写对象下面公用到的方法或属性,让公用的方法和属性在内存中只存在一份(好处就是提供性能)
要写在构造函数的下面
可以类比css中的class 而普通方法则类比css中的style
首先优先级方面的问题: 例如
var num = {}; num.number = 10 Object.prototype.number = 20; console.log(num.number); //10
var num = {}; Object.prototype.number = 20; console.log(num.number); //20
工厂方法之原型:
function CreatePerson(name, age, job) { this.name = name; this.age = age; this.job = job; this.show = function() { console.log(this.age + "岁的" + this.name + "是一名" + this.job); } } var p1 = new CreatePerson("王秀娥", 30, "农村妇女"); p1.show();
将上面的方法改造一下:
function CreatePerson(name, age, job) { this.name = name; this.age = age; this.job = job; } CreatePerson.prototype.show = function() { console.log(this.age + "岁的" + this.name + "是一名" + this.job); } var p1 = new CreatePerson("王秀娥", 30, "农村妇女"); var p2 = new CreatePerson("andy", 26, "程序猿"); console.log(p1.show == p2.show); //true
这时候,show的方法就是公用的方法了;
面向对象的写法:
function 构造函数() { this.属性 } 构造函数.原型.方法 = function () {};
那么使用则:
var 对象1 = new 构造函数(); 对象1.方法();以上就是面向对象的写法和使用!