1.call 方法
调用格式:obj1.fun.call(obj2,参数1,参数2,参数3,...,参数n);
如果对象obj1是window,可省略;
参数可选,在方法fun执行时传入;
调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容)。
call 方法是一种继承方式,叫抄写继承。
简单的说,想让对象A执行对象B的方法,继承对象B的属性,就可以使用call 方法。
举例说明:
function obj(){ this.value="1"; } // obj是window对象的一个方法,所以 this 指向的对象是window;window.value = 1;
var value="2"; // 这里的value变量是在window环境下定义的,它是对象window的一个属性;window.value = 2;
function fun1(){
alert(this.value);
this.name="123"
}
var that={
value:3 // that对象中的this指向是 that 对象。
}
2.For...In 声明
String 对象的方法 slice()、substring() 和 substr() (ECMAscript 没有对该方法进行标准化,不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
substr():
stringObject.substr(start,length)
一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 lenght 个字符
var str ="hello my world! ";
str.substr(2,2); // 从第2个字符"e"开始,截取到之后的2个字符,就是 "ll";
substring():
stringObject.substring(start,end)
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
var str ="hello my world! ";
str.substr(2,5); // 从第2个字符"e"开始,截取到第5个字符"o",就是 "hello";
slice():
stringObject.slice(start,end)
slice() 跟substring()方法相似,且更灵活一些 因为它允许使用负数作为参数,所以使用它截取字符,是最佳之选.
var str ="hello my world!";
str.slice(2,-2); // 从第2个字符"e"开始,截取到倒数第2个字符"l",就是 “llo my worl”