gpt4 book ai didi

javascript - 像选择器原型(prototype)这样的库中出现 'this' 的问题

转载 作者:行者123 更新时间:2023-12-03 07:54:36 24 4
gpt4 key购买 nike

我想做什么?$(arguments).sample(function(){ return this; })

  • 像上面提到的选择器,然后使用名为sample的函数对其进行原型(prototype)设计,并在其中调用一个函数
  • 如果用户使用“this”;应该返回参数对象

我做了什么?

var $ = function(){
return new library();
}
var library = function(){};
library.prototype = {
sample: function(callback) {
callback();
}
}

但实际上无法做我想做的事:/我尝试了很多东西,但我希望 $ 既可以用作函数 $([1,2]).stringify() (我一直在谈论的),也可以用作像这样的对象上面提到的$.sample()

一些可能的例子:

$('hello').print();
$('hello').sample(function(){ console.log(this); });
$.print('hello');
$('hello').print().log();

最佳答案

  • 如果参数是原语怎么办?这不可能是一个原语。+
  • 您可以将函数添加到原型(prototype)中并作为实用程序方法,但实用程序方法必须是包装器。
  • 如果原型(prototype)方法是这样的:

    $.prototype.foo = 函数(arg1, arg2, arg3){ for(var i=0; i

实用程序方法的签名应该是什么?如何分离“this”的参数和函数参数?

$.foo = function(...thisArg, arg1, arg2, arg3){}
//or
$.foo = function(thisArgs, arg1, arg2, arg3){}
//and what if thisArgs contains only one Array, are you sure, that you will remember/want to use [[/* values */]]

也许你想构建这样的东西:

function $(){
var me = Object.create($.prototype);
for(var i=0, j=arguments.length; i<j; ++i) me[i] = arguments[i];
me.length = j;
//Object.freeze(me);
return me;
}

var AP = [];
$.prototype.reduce = AP.reduce;
$.prototype.each = function(fn){
AP.forEach.call(this, fn, this);
return this;
}

$.prototype.map = function(fn){
return $.apply(null, AP.map.call(this, fn, this));
}

$.prototype.filter = function(fn){
return $.apply(null, AP.filter.call(this, fn, this));
}

$.prototype.log = function(comment){
if(comment) console.log(comment + ":");
return this.each(v=>console.log(" ", v));
}

以及用法

var a = $("lorem", "ipsum", "dolor");
a.map((v,i) => i + ": " + v).log("logged Items");

console.log("a instanceof $: ", a instanceof $);

关于javascript - 像选择器原型(prototype)这样的库中出现 'this' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34851320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com