<script type="text/javascript">
var accumulator={
add:function(a,b)
{
return a+b;
},
mius:function(a,b)
{
return a-b;
}
};
alert(accumulator.add(3,4));
</script>
将会弹出7。
Object对象
hasOwnProperty(property):判断该对象是否有某个特定的属性。
isPropertypeOf(property):判断该对象是否是另外一个对象的原型。
toString():返回对象的原始字符串显示。
valueOf():返回最适合该对象的原始值。
toFixed(val):返回具有指定位数val的数字字符串。
String截取子字符串:slice()和substring()
当传入的参数都为整数的时候。两个方法的返回值相同,而当参数中含有负数的时候,slice()会用字符串的长度加上参数,而substring()则会将负数作为0处理,并且总是将较小位做起始位,较大位做末尾。
var str="hello";
alert(str.slice(-3)); //将弹出"llo"
alert(str.substring(-3)); //将弹出hello
delet将会删除对以前定义的对象属性或方法的调用。
var person=new Object();
person.name="xuzengqiang";
alert(person.name);
delete person.name;
alert(person.name); //将会弹出undefined
对象的创建,原型方式:
function Person(name,age)
{
this.name=name;
this.age=age;
}
Person.prototype.showPerson=function()
{
alert(this.name+"----"+this.age);
}
var person1=new Person("xuzengqiang","22");
if(person1 instanceof Person)
{
person1.showPerson();
}
扩展多个方法可以这样写:
function Person(name,age)
{
this.name=name;
this.age=age;
}
Person.prototype={
showPerson:function()
{
alert(this.name+"----"+this.age);
},
test:function(){
if(this.age>=18 && this.age<=30)
{
alert("你是成年人了!");
}
else
{
alert("你还不是成年人!");
}
}
}
var person1=new Person("xuzengqiang","22");
if(person1 instanceof Person)
{
person1.showPerson();
person1.test();
}
编写StringBuffer,与String本身字符串拼接做性能测试。
function StringBuffer(){
this._string=new Array();
};
StringBuffer.prototype={
append:function(str)
{
this._string.push(str);
},
toString:function()
{
return this._string.join("");
}
};
var buffer=new StringBuffer();
//性能测试
var startTime=new Date();
for(var i=0;i<100000;i++)
{
buffer.append("test");
}
var endTime=new Date();
alert("StringBuffer用时:"+(endTime.getTime()-startTime.getTime())+"ms");
var str=new String();
startTime=new Date();
for(var i=0;i<100000;i++)
{
str+="test";
}
endTime=new Date();
alert("String用时:"+(endTime.getTime()-startTime.getTime())+"ms");
在不考虑其它环境的影响下,StringBuffer相比String进行字符串拼接效率要高。
继承
方式一:对象冒充。构造函数使用this关键字给所有属性和方法赋值。
function Person(name)
{
this.name=name;
this.say=function()
{
alert(this.name);
}
}
function Man(name)
{
this.newPerson=Person;
this.newPerson(name);
delete this.newPerson;
}
var man=new Man("xuzengqiang");
man.say();
对象冒充可以实现多重继承。
方式二:利用apply()和call()方法。
call(arg1,arg2,[arg3.....]);第一个参数是作用this对象,其它参数都是直接传递给参数本身。
function Person(name)
{
this.name=name;
this.say=function()
{
alert(this.name);
}
}
function Man(name)
{
Person.call(this,name);
}
var man=new Man("xuzengqiang");
man.say();
apply(arg1,arg2):第一个参数用作this对象,第二个参数是传递给函数的参数数组。
function Person(name)
{
this.name=name;
this.say=function()
{
alert(this.name);
}
}
function Man(name)
{
Person.apply(this,new Array(name));
}
var man=new Man("xuzengqiang");
man.say();
方式三:原型链方式,直接将一个对象的实例赋给子类的原型。但是要确保构造函数中没有任何参数,才是原型链的标准方法。
function Person()
{
}
Person.prototype.name="xuzengqiang";
Person.prototype.say=function()
{
alert(this.name);
}
function Man()
{
}
Man.prototype=new Person();
var man=new Man();
man.name="wuyue";
man.say();
方式四:混合方式:原型链+apply()/call()方法
function Person(name)
{
this.name=name;
}
Person.prototype.say=function()
{
alert(this.name);
}
function Man(name,age)
{
Person.call(this,name);
}
Man.prototype=new Person();
Man.prototype.show=function()
{
alert(this.age);
}
var man=new Man("xuzengqiang","22");
man.say();
事件处理event,event必须作为唯一参数传递给事件处理函数。
IE和其他浏览器相同的事件。
1、获取事件类型.event.type(将返回如"click","mouseover"等类型的字符串)。
2、获取按键值:event.keyCode。
3、检测是否按下alt,shift,ctrl键(event.ctrlKey,event.shiftKey,event.altKey)。
4、获取客户端坐标,可以用clientX和clientY获取鼠标指针在客户端的位置。