动态类型与静态类型:
静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量要到程序运行时,待变量被赋值后,才会具有某种类型。
JavaScript变量之基本类型值与引用类型值
引用类型值是指那些可能由多个值构成的对象,是引用类型的一个实例。
JavaScript引用类型主要包括Object,Array,Date,RegExp,Function以及为了操作基本类型值提供的三个特殊引用类型:Boolean,Number和String。
JavaScript中是没有类的概念,其主要依靠原型链实现继承。
对象的原型,就JavaScript真正实现而言,其实对象并无原型,而是对象的构造器(构造函数)与原型。JavaScript对象的__proto__属性默认即指向其构造器原型对象。
构造函数,原型与实例:
每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针。而构造函数的实例都包含一个指向原型对象的内部指针。JavaScript中所有对象都默认继承自根对象Object。
给一个构造函数的原型对象赋值为另一个类型的实例,此时原型对象即包含指向另一原型对象的指针,而另一个原型对象中也包含指向其相应构造函数指针,如此便构成了原型与实例的关系链,也即原型链。
function Animal() {
this.property='Animal';
}
Animal.prototype.getAnimalProperty = function() {
return this.property;
};
function Dog() {
this.dogproperty='dog';
}
Dog.prototype=new Animal();
Dog.prototype.getDogProperty = function() {
return this.dogproperty;
}
var dog = new Dog()
alert(dog.getDogProperty)
alert(dog.getAnimalProperty)
shift:该方法用于把数组的第一个元素从其中删除,并返回被删除的值。如果数组是空的,shift方法将不进行任何操作,返回underfined的值。
unshift:该方法是向数组开头添加一个或者更多元素,并返回新的长度
splice:该方法用于插入,删除和替换数组的元素
slice:该方法是从已有的数组中返回指定的元素
//判读一个数组中是否有相同的元素
function isRepeat1(arrs) {
if(arrs.length > 0) {
var s = arrs.join(",")
for(var i = 0, iLen = arrs.length; i < iLen; i += 1) {
if(s.replace(arrs[i], "").indexOf(arrs[i]) > -1) {
return true;
}
}
}
return false;
}
function isRepeat2(arrs) {
var hash = {};
if(arrs.length > 0) {
for(var i = 0, iLen = arrs.length; i < iLen; i+=1) {
if(hash[arrs[i]]) {
return true;
}
}
}
return false;
}
//JavaScript删除数组重复元素的操作