javaScript基础总结
对于javaScript来讲,并没有类的概念,但是可以理解为有类的概念,我们在创建一个对象的时
间可以去定义一个构造器,这个构造器跟JAVA的构造方法差不多,只要以后每创建一个对象这个
对象就会具备构造器中的属性。
在Javascript中每一对象都有一个属性为Prototype这个属性,对于这个属性就相当于JAVA中的
super关键字,是代表着对父类对象的一个引用,由于我们创建对象的时间如果将方法定义在构
造器中就会造成过多的浪费,因此我们可以将我们要定义的方法交给父类,当我们在去创建对象
的时间那么在内存中就不必再为这个方法开辟空间了,只保证有一个
Person.prototype.say=function(){alert("Ok")}
既然谈及到父类那么不得不说继续;
javascript中的继续,有真继续和假继续。假继承无非就是将父类的构造器的方法指针交给子类
的一个变量,然后这个指针就指向了父类的构造器,我们就可以进行我们的操作,然后将子类定
义的这个变量删除,有点过河拆桥的味道,然后还可以定义自身的方法和属性。
javascript中的真继续,就是将父类的一个对象,NEW的一个对象,交给子类一个变量,然后这
个变量再去操作父类等方法。
创建对象有下面的这么几种方法:
1》简单的工厂模式:
例如: function createObject(){
var obj = new Object();
obj.name="Tom";
obj.sing=function(){alert(Ok)}
return obj;
}
对于上面的这种模式,我们可以看出每次我们调研后产生的对象的名字都是一样,方法也一
样的,因此,出现了下面的这种模式:
例如: function createObject(name){
var obj = new Object();
obj.name=name;
obj.sing=function(){alert(this.name)}
return obj;
}
2>> 构造器:
function Person(name,height){
this.name=name;
this.height=height;
this.sing=function(){alter(this.name)}
} 上面这样的构造器当我们每创建一个对象的时间那么就会创建一个函数,消耗内存;因此
出现了原型方式:
3》 原型构造法:
function Person(){
Person.prototype.name="Tom";
Person.prototype.sing=function(){
alert(this.name);
}
}
对于上面的名字是写死了的出现缺陷所以出现了原型构造法和混合构函数
4》 function Person(name){
this.name=name;
}
Person.prototype.sing=function(){
alert(this.name)
}
这种模式看上去仿佛有点不自然,因为属性写到构造器的外面来了,所以有如下的方式
5》动态原型方式:
function Person(name){
this.name=name
if(typeof _inint=="undefined"){
Person.prototype.sing=function(){
alert(this.name)
}
Person._inint=true;
}
}
6>> 混合工厂方式