CNode

想到一道难题,给出你的解决方法,来挑战吧!(已放答案)

问答
Tthink2011发布于12 年前最后回复12 年前14 回复4698 浏览0 收藏
var Ins = 1;
function Key () {
    this.Ins = Ins;
	Ins++;
}

Key.prototype = {
    _key: function () {
        this.key = Date.now();
        console.log('当前实例的是:');
        console.log(this);
    },

    apply: function (fn) {
        // 请在此补充代码
        // 请在此补充代码
        // 请在此补充代码
    }
}

// 使以下代码生效
var key1 = new Key();
key1.apply(function (getKey) {
    getKey(); // key1 = {Ins: 1, key: 1414373757271}
});

var key2 = new Key();
key2.apply(function (getKey) {
    getKey(); // key2 = {Ins: 2, key: 1414264564574}
});

请补充 原型方法 apply 的代码,我只想到一种解决方案。

以下是我的方案

    apply: function (fn) {
        var that = this;
        
        function TempFn(){}
        TempFn.prototype.key = function(){
            that._key.call(that);
        }
        
        fn((new TempFn()).key);
    }
	```
查看回复

回复 (14)

H
hainee#1·12 年前

直接输出不就行了,你想在getKey中去做?脱了裤子放屁! apply: function (fn) { console.log("“恭喜调用成功!当前的Ins是:" + this.Ins); this._key(); }

T
think2011#2·12 年前
  • 单独看题目或许很诡异,似乎没什么用处。
  • 这是我在实际工作案例中提取出的内容,题目是想要表达处理思路,就跟数学题一样。
  • 如果觉得楼主在胡闹... 那么请无视我吧。
T
tulayang#3·12 年前

全局变量满天飞

H
hainee#4·12 年前
引用 think2011单独看题目或许很诡异,似乎没什么用处。 这是我在实际工作案例中提取出的内容,题目是想要表达处理思路,就跟数学题一样。 如果觉得楼主在胡闹... 那么请无视我吧。

@think2011 就单论数学的话,那也是符合美感的才是好的,就你提出的这个问题,我还是那个答案,脱了裤子放屁……

X
XadillaX#5·12 年前
fn(function() { return { key: this._key() ? 0 : this.key, Ins: this.Ins }; }.bind(this));
X
XadillaX#6·12 年前

@leapon @hainee 他只是想考一下关于 bind 或者 call 以及返回一个函数之类的基础,你们何必为难他呢 -。 -

L
leapon#8·12 年前
apply: function (fn) {
    key._key();
}
L
leapon#9·12 年前

看不懂楼主要干嘛。this.key 是不是应该在constructor里设上。

T
think2011#10·12 年前
引用 leapon看不懂楼主要干嘛。this.key 是不是应该在constructor里设上。

@leapon 果然还是表达不好,我稍微修改了一下内容。

X
XadillaX#12·12 年前

难题难题,也得难的题啊😂撸主你这只能算是基础题。

T
think2011#13·12 年前
T
think2011#14·12 年前
引用 XadillaX难题难题,也得难的题啊😂撸主你这只能算是基础题。

@xadillax 我补充我的答案了,是否有更简单的办法呢?

参与回复
登录后即可参与回复。登录