我的作业3
#我的作业3
# 1、
var length = 100;
function f1() {
console.log(this.length)
}
var obj = {
x: 10,
f2: function(f1){
f1();
arguments[0]();
}
}
obj.f2(f1,1,2,3);
解析的过程及结果
100
4
先解析f1()指向window的length,再计算整个arguments对象的长度
# 2、
var number = 1;
var obj = {
number:2,
showNumber:function(){
this.number = 3;
(function(){
console.log(this.number);
})();
console.log(this.number);
}
};
obj.showNumber();
解析的过程及结果
1
3
第一个this由于是指向闭包函数,this指向window,第二个this指向自身函数showNumber
# 3、
用递归来实现5的阶乘
function p(n){
n>1?n=n*p(n-1):1
return n;
} p(5)
# 4、
闭包的写法?为什么需要用到闭包?
function a(){
var i=0;
function b(){
console.log(++i);
}b();
}a();
闭包是由构b()造函数体内定义另外的函数作为内部对象的保护。
# 5、
代码实现—利用闭包原理封装对象缓存局部变量name的值
function class(){
var name;
function getName(){
return name;
}
function setName(value){
name = value;
}
}
# 6、
function f() {
console.log(this.a )
}
var obj = {
a: 2,
f: f
}
var f2 = obj.f;
var a = "hello world";
f2();
问:this的指向是?运行的结果是? this指向window, 运行结果为hello world
# 7、
function f(something) {
console.log(this.a, something)
return this.a + something
}
var obj = {
a: 2
}
var f2 = function() {
return f.apply(obj, arguments)
}
var b = f2(3);
console.log(b);
运行的结果是:
2,3
5
apply方法劫持另外一个对象的方法,继承另外一个对象的属性.