小编use*_*170的帖子

为什么“Object”和“Function”具有相同的原型?

为什么Object.getPrototypeOf(Object) === Object.getPrototypeOf(Function)在 JavaScript\xef\xbc\x9f 中

\n

这样设计的目的是什么\xef\xbc\x9f

\n

javascript prototype

5
推荐指数
1
解决办法
209
查看次数

等待代理导致获取“then”属性,我应该返回什么?

我有一个Proxy模仿虚拟物体的方法。该代理的 Getter 返回准备好的值。

我发现,如果等待代理,它会导致调用我的代理的“then”属性:

await myProxy
Run Code Online (Sandbox Code Playgroud)

在这种情况下我的代理 getter 应该返回什么?返回代理本身或对自身的承诺是一个好主意吗?

例子在这里:

https://jsfiddle.net/rv55Lpu1

让我感到困惑的是,如果我是await一个对象,我会得到该对象,但如果我是awaita Proxy,它需要有一个返回自身的“then”属性陷阱。

javascript async-await es6-proxy

5
推荐指数
1
解决办法
2215
查看次数

为什么将对象的原型设置为“Foo”不会使其成为“Foo的实例”?

我正在尝试Object.setPrototypeOf重新设置已转换为 JSON 并返回对象的对象的原型。然而,instanceof似乎并没有按照我预期的方式工作:

class Foo {}

const obj = {};
Object.setPrototypeOf(obj, Foo);
console.log(obj instanceof Foo);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?据我所知,instanceof工作基于将给定对象的原型与引用的类进行比较。应该有不同的方法吗?

javascript prototype instanceof ecmascript-6

5
推荐指数
1
解决办法
1450
查看次数

JavaScript 中的可撤销代理有什么用?

为什么要撤销代理?您能提供一个实际应用吗Proxy.revocable()

根据MDN Proxy.revocable() 文档,我了解它允许垃圾收集。但是,如果你刚刚删除了 Proxy 对象,不是也允许垃圾回收吗?

附录:如果这个问题有问题,请告诉我它是什么,我很乐意改写或添加其他信息。

@艾米:

我认为这似乎是一个不必要的内置功能,因为我可以像这样创建一个可撤销代理:

function createRevocable(o,handlers){
	var revoked = false
	var handlerWrapper = {
		get(...args){
			if(revoked){
				throw Error('Sorry, this object went poof.')
			}
			if(typeof handlers.get == 'function'){
				return handlers.get(...args)
			}else{
				return Reflect.get(...args)
			}
		}
	}
	var p = new Proxy(o,Object.assign({},handlers,handlerWrapper))
	var r = function(){
		revoked = true
	}
	return {r,p}
}

var a = createRevocable({a:1},{})
var prox = a.p
var revoke = a.r
console.log(prox.a) //1
revoke()
console.log(prox.a)
Run Code Online (Sandbox Code Playgroud)

然而,垃圾收集似乎确实是问题所在,因为我可以撤销对该对象的访问,但无法删除 Proxy 对象内对其的内部引用。除非...

javascript es6-proxy

5
推荐指数
1
解决办法
1630
查看次数

如何将解析后的 CS:GO 十字线代码对象编码回字符串表示形式?

我有一个函数将 CS:GO 十字线代码解码为键值对象。

(之前我问过如何解码CS:GO的分享代码的问题在这里

如何从解码这些值反转为将它们编码为由字母数字字符组成的“共享代码”?

函数解码分享代码:

const BigNumber = require("bignumber.js");

// Intentionally no 0 and 1 number in DICTIONARY
const DICTIONARY = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefhijkmnopqrstuvwxyz23456789";
const DICTIONARY_LENGTH = DICTIONARY.length;
const SHARECODE_PATTERN = /CSGO(-?[\w]{5}){5}$/;

const bigNumberToByteArray = big => {
  const str = big.toString(16).padStart(36, "0");
  const bytes = [];

  for (let i = 0; i < str.length; i += 2) {
    bytes.push(parseInt(str.slice(i, i + 2), 16));
  }

  return bytes;
}

const parseBytes = bytes => {
  return {
    cl_crosshairgap: Int8Array.of(bytes[2])[0] / …
Run Code Online (Sandbox Code Playgroud)

javascript encoding byte decoding node.js

5
推荐指数
1
解决办法
690
查看次数

如何使 JavaScript Proxy 的处理程序方法成为异步函数?

请参阅 Mozilla 文档中有关Proxy()的内容

一个简单的代理示例:

const handler = {
  get: function(target, prop, receiver) {
    return Reflect.get(target, prop, receiver);
  },
  set: function(target, prop, receiver) {
    return Reflect.set(target, prop, receiver);
  }
};

const proxy = new Proxy(target, handler);
Run Code Online (Sandbox Code Playgroud)

get我在and中有一些异步函数set,所以我想让getsetto 成为async函数。

我期望类似的东西:

const handler = {
  get: async function(target, prop, receiver) {
    await foo();
    return Reflect.get(target, prop, receiver);
  },
  set: async function(target, prop, receiver) {
    await bar();
    return Reflect.set(target, prop, receiver);
  }
};

const …
Run Code Online (Sandbox Code Playgroud)

javascript handler async-await es6-proxy

5
推荐指数
1
解决办法
1388
查看次数

JavaScript 代理在“get”上返回异步值

我有一些从网络服务器获取的对象。对象的某些属性需要额外的异步解析,但出于性能原因我想延迟执行此操作。我试图使用代理来拦截访问,然后在访问时解析属性。我的处理程序看起来像这样

class MyClass {
   type() {
      return "my new class";
   }
}

let myObject = new MyClass();

let proxy = new Proxy(myObject, {
  get: async(target, prop, receiver) => {
    if (prop === "attribute") {
      let newProp = prop + "_parsed";
      if (!(newProp in target)) {
        return await (new Promise((resolve, reject) => { resolve("parsed value") }));
      }
      else {
        return target[newProp];
      }
    }
    else {
      return Reflect.get(target, prop, receiver);
    }
  },
});

console.log(proxy.attribute);  // "parsed value"
console.log(proxy.type()); // "my new class" …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous es6-proxy

5
推荐指数
1
解决办法
3830
查看次数

如何获取内部值以用作 gdb 漂亮打印的数组?

我为 InnerStruct 编写了一个漂亮的打印机,它将数组显示为 2 个元素和正确的值。我还为TestStruct2开了个玩笑,但是我不知道如何使TestStruct包含与InnerStruct相同的内容。我不知道如何从 gdb/python 访问 array.nestedVariables。我如何编写这个以便 TestStruct 给出与 InnerStruct 相同的结果?

来源

struct InnerStruct
{
    int buffer[100];
    int len;
};
struct TestStruct
{
    InnerStruct array;
};
struct TestStruct2
{
    InnerStruct array;
};

int main() {
    TestStruct s;
    s.array.buffer[0] = 5;
    s.array.buffer[1] = 8;
    s.array.len=2;
    TestStruct2 s2;
    s2.array.buffer[0] = 5;
    s2.array.buffer[1] = 8;
    s2.array.len=2;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

.gdbinit

python

pp = gdb.printing.RegexpCollectionPrettyPrinter("pp")

class InnerStructPrinter:
    "Print a InnerStruct"

    class _iterator:
        def __init__ (self, start, finish):
            self.item = start
            self.finish = finish …
Run Code Online (Sandbox Code Playgroud)

python gdb pretty-print

5
推荐指数
1
解决办法
212
查看次数

JavaScript 中的活跃度是什么?

为了研究 JavaScript GC 的复杂性,我深入研究了其中的内容(即 ECMAScript 规范)。我发现,只要一个物体被认为是“活的”,就不应该被收集。活性本身定义如下:

在评估期间的任何时刻,如果满足以下任一条件,则将一组对象S视为 活动对象:

  • S中的任何元素都包含在任何代理的[[KeptAlive]]列表中。
  • 存在一个关于S的有效的未来假设 WeakRef-oblivious 执行,它观察S中任何对象的 Object 值。

[[KeptAlive]]一旦创建了一个特殊对象WeakRef(弱地)引用它,该列表就会附加一个对象,并在当前同步作业停止后清空。然而,对于WeakRef-oblivious execution,我无法理解它是什么:

对于某些对象集S,关于S 的假设的 WeakRef 不经意执行是这样一种执行:其所指对象是S的元素的WeakRef的抽象操作WeakRefDeref始终返回undefined

WeakRefDerefWeakRef当其undefined所指对象已被收集时返回。我的理解是否正确,这里暗示所有组成的对象都S应该被收集?因此,未来假设的 WeakRef-oblivious 执行的概念是,仍然存在一个对象, 的一个元素S,尚未被某些 收集和观察WeakRef

这一切对我来说仍然毫无意义。我希望得到一些样品。

javascript garbage-collection weak-references

5
推荐指数
1
解决办法
257
查看次数

Java null 类型是所有基本类型的子类型吗?

Java 语言规范 20,第4.10 节。子类型表明

类型 T 的子类型都是类型 U,因此 T 是 U 的超类型和 null 类型。我们写 T <:S 来表示类型 T 和 S 之间存在子类型关系。

这是否意味着 null 类型是所有基本类型的子类型?如果是的话,有什么实际后果吗?

我正在编写一个库来解析和分析 java 代码,那么我应该将其视为null的子类型吗int?或者根本不重要?

java types jls language-lawyer subtyping

5
推荐指数
0
解决办法
134
查看次数