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