想到一道难题,给出你的解决方法,来挑战吧!(已放答案)
发布于 10 年前 作者 think2011 4197 次浏览 最后一次编辑是 8 年前 来自 问答
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 回复
apply: function (fn) {
    key._key();
}

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

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

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

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

全局变量满天飞

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

@hainee 好吧,我知道了。

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

@xadillax 能试着写一下吗?拜托啦。

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

fn(function() { return { key: this._key() ? 0 : this.key, Ins: this.Ins }; }.bind(this));

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

@xadillax 谢谢,我习惯了网络的偏见和冲击。

回到顶部