版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_22689423/article/details/56512530
javascript面相对象编程
OOP
抽象:抓住核心问题
封装:只能通过对象访问方法
继承:从已有对象继承出新的对象
多态:多对象的不同形态
- 工厂模式和构造函数
function createPerson(name){
var obj = {};
obj.name = name;
obj.sayName = function(){
alert(this.name)
}
return obj;
}
var p1 = createPerson('xx').sayName(); //xx
当new去调用一个函数始,this指向该创建出来的对象,后面的函数叫做构造函数
改造 构造函数
function createPerson(name){
this.name = name;
this.sayName = function(){
alert(this.name);
}
}
var p2 = new createPerson('xxx');
p2.sayName(); //xxx
3.对象引用的问题
基本类型:值的复制
对象类型: 引用的传递和值得复制
原型:去改写对象公共的方法和属性,内存存一份,提高性能
普通方法:css中的style 优先级高
原型:css中的class
protopyte 要写在构造函数的下面
function createPerson(name){
this.name = name; //变化的不能放入原型
}
createPerson.protopyte.sayName = function(){
alert(this.name); //公共的方法
}
面向对象编程变形
1.先变形
2.尽量不要出现函数嵌套函数
3.可以有全局变量
4.把onload中不是赋值的语句放在单独的函数中
全局变量就是属性
函数就是方法
onload中创建对象
改this 的this尽量指向对象