wgj-yzy

1  js对象的组成  有方法和属性

js中有 方法  函数 事件处理函数 构造函数  其实这四个都是函数,只是作用不同。函数是独立的存在 方法属于一个对象 事件处理函数处理一个事件  构造函数用来构造对象

window对象

function show(){

alert(this)

show()

会弹出 [object Window]  说明全局函数属于window。上面定义的show()等于为window添加一个方法,全局的函数和变量都是属于window的  等价于下面

window.show(){

alert(this)

window.show();

2 通过object 创建简单对象

var people = new Object();

people .name = \'yao\';

people .age = 12;

people .alert = function(){

  alert(this.age this.name);

}

people .alert();

这种方法  有弊端  就是如果我有多个人怎么办,每次都要新建一个对象,然后添加属性、方法,这种方式是一次性的,会产生大量重复代码,这是不可取的。

工厂模式

function creatPeople(name,age){

var person  = new Object()

person.name = name;

person.age = age;

persion.alert = function(){

  alert(this.name this.age)

}

return person;

var yao = creatPeople(\'yao\',\'20\');

var wang = creatPeople(\'wang\',\'18\');

yao.alert();

wang.alert();

 

在function原型(prototype)上进行扩展 —— 最终版

function person(name,age){

  this.name = name;

  this.age = age

}

person.prototype.showName = function(){

  alert(this.name)

}

person.prototype.showAge = function(){

  alert(this.age)

}

var p1 = new person(\'yao\',\'20\');

var p2 = new person(\'wang\',\'18\');

alert(p1.showName == p2.showName) //true

alert(p1.showName == p2.prototype.showName) //true

在function原型(prototype)上进行扩展 —— 最终版

对数组原型扩展一个求和的方法;
注意不能只加在某个数组对象上,那样的话只能在那个对象上适用。

Array.prototype.sum = function(){

  var sum = 0;

  for(var i = 0,var len=this.length;i<len;i++){

    sum += this[i];  

  }

  return sum;

}

var arr1 = new Array(1,2,3,4,5,6);

var arr2 = [11,22,33,44,55];
alert(arr1.sum == arr2.sum); //true
alert(arr2.sum == Array.prototype.sum); //true





分类:

技术点:

相关文章: