js面向对象之原型

责编:menVScode 2017-06-16 15:02 阅读(781)

        原型:增加改写对象下面公用的方法或者属性 , 让公用的方法或属性在内存中只保存一份,这样有利于提高程序的运行性能。

        举个例子:将数组中所有数字相加求和

        1、常规方法

var arr = [1,5,6,9,2];
var arr2 = [55,7,23,19,26];
arr.sum = function(){
	var total = 0;
	for (var i = 0; i < this.length; i++) {
		total += this[i];
	};
	return total;
} 
alert(arr.sum()); //23   

         如果再来一个数组arr2,他是无法调用数组arr下的sum方法,数组arr2只能自己另外在写一个一模一样的sum函数。


        2、面向对象的原型方法

        原型(prototype) : 

        JavaScript的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。只有null除外,它没有自己的原型对象。

原型对象上的所有属性和方法,都能被派生对象共享。这就是JavaScript继承机制的基本设计。

        JavaScript通过构造函数生成实例对象(新对象)时,会自动为实例对象分配原型对象。每一个构造函数都有一个prototype属性,这个属性就是实例对象的原型对象。

        要写在构造函数的下面。

var arr = [1,5,6,9,2];
var arr2 = [55,7,23,19,26];
Array.prototype.sum = function(){
	var total = 0;
	for (var i = 0; i < this.length; i++) {
		total += this[i];
	};
	return total
}
console.log(arr.sum());//23
console.log(arr2.sum());//130
console.log(arr.sum==arr.sum);//true

        注意:给类加方法和给实例对象加方法是有优先级的,实例对象优先级大。

var arr3 = [];
arr3.value = 1;
Array.prototype.value = 2;
console.log(arr3.value);//1

        总结面向对象的写法:

function 构造函数(){
	this.属性
}

构造函数.原型.方法 = function(){};

var 对象1 = new 构造函数();
对象1.方法();
标签: js 面向对象 原型
前端交流群: MVC前端网(menvscode.com)-qq交流群:551903636

邮箱快速注册

忘记密码