<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js Object</title>
</head>
<body>
</body>
<script>
//1.简单面向对象
var obj=new Object();
obj.qq='12121212';
obj.name='summer';
obj.show=function(){
alert('qq:'+obj.qq+'name:'+obj.name);
};
//obj.show();
/*2.工厂模式
1.原料 2.加工 3 出厂
问题:1.没有new 2.函数重复,每个对象有一个自己的函数,会造成资源浪费,性能渐低
*/
function creatObj(name,qq){
var obj=new Object(); //创建对象
obj.qq=qq;
obj.name=name;
obj.show=function(){
alert('qq:'+obj.qq+'name:'+obj.name);
};
return obj; //返回对象
}
//var obj1=creatObj('summer','1212121'); //没有new
// obj1.show();
//3.上述方法改进,不需要手动创建对象
function creatObjNew(name,qq){
//系统自动创建对象
this.name=name;
this.qq=qq;
this.show=function(){
alert(obj.name+' '+obj.qq);
};
//系统自动返回
}
var obj2=new creatObjNew('autum','111111');
// obj2.show();
//3.解决函数重复 <==>原型
//原型名词解释
// CSS JS
// class 一次给一组元素加样式 原型
// 行间样式 一次给一个元素加样式 对对象加事件
/*例子:原型 数组求和 <==> 类和对象的使用 类可以new */
var arr1 = new Array(12, 13, 11, 14, 53, 67, 86, 85, 23);
var arr2 = new Array(11, 22, 33, 44, 55, 66, 77, 88);
Array.prototype.sum=function(){ //使得arr1和arr2都有sum方法
var result=0;
for(var i=0;i<this.length;i++){
result+=this[i];
}
return result;
};
//alert(arr1.sum());
// alert(arr2.sum());
//4.给自己的构造函数添加方法
function creatPerson(name,age){
this.name=name;
this.age=age;
}
creatPerson.prototype.show=function(){
alert('name:'+this.name+'age:'+this.age);
};
var person1=new creatPerson('wade',23);
var person2=new creatPerson('james',24);
person1.show();
person2.show();
//构造函数添加属性,原型添加方法
</script>
</html>
js面向对象基础
最新推荐文章于 2022-10-24 17:09:43 发布