参考: https://cnodejs.org/topic/5884574e250bf4e2390e9e99
1.写出运行结果
var length = 10;
function fn() {
console.log(this.length)
};
var obj = {
length: 5,
method: function (fn) {
fn();
arguments0;
fn.call(obj, 12);
}
};
obj.method(fn, 1);
答案是:
10 2 5
2 写出在浏览器的运行结果
function Foo() {
getName = function () {
console.log('1');
};
return this;
}
Foo.getName = function () {
console.log('2');
};
Foo.prototype.getName = function () {
console.log('3');
};
var getName = function () {
console.log('4');
};
function getName() {
console.log(5);
}
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
答案如下:
2 4 1 1 2 3 3
3 完成plus函数,通过全部的测试用例。
'use strict';
var assert = require('assert')
var plus = require('../lib/assign-4')
describe('闭包应用',function(){
it('plus(0) === 0',function(){
assert.equal(0,plus(0))
})
it('plus(1)(1)(2)(3)(5) === 12',function(){
assert.equal(12,plus(1)(1)(2)(3)(5))
})
it('plus(1)(4)(2)(3) === 10',function(){
assert.equal(10,plus(1)(4)(2)(3))
})
it('方法引用',function(){
var plus2 = plus(1)(1)
assert.equal(12,plus2(1)(4)(2)(3))
})
})
答案如下:
function plus (n) {
var p = function (m) {
return plus(n + m);
}
p.valueOf= function () {
return n;
}
return p;
}
网友评论