JS native 函数重命名 和 代码行定位

2018-02-27 12:24:29 +08:00
 wwjvtwoex

今天遇到的问题,求高手指点,谢谢

<1 native 函数重命名>

定义 var p = console.log

可以正常调用 p('x') => 输出 x

....................................

但定义 var qa = document.querySelectorAll

调用 qa('div') 发生错误 Illegal invocation

===========================

<2 代码定位>

定义函数

<1> function p(x) {

<2> console.log(x)

<3> }

然后在某处调用

<10> p(111)

在 chrome Console 中 只显示定义处的行号"2",不显示调用处的行号"10"

2919 次点击
所在节点    JavaScript
5 条回复
wwjvtwoex
2018-02-27 12:46:39 +08:00
补充 :

var qa = document.querySelectorAll

问题 1 的 错误信息 是 chrome 显示的

在 firefox 下显示

TypeError: 'querySelectorAll' called on an object that does not implement interface Document.
sunjourney
2018-02-27 12:54:28 +08:00
```
var p1 = function (...args) {
console.log(...args)
}

var p2 = console.log.bind(console)

var qa1 = function (...args) {
return document.querySelectorAll(...args)
}

var qa2 = document.querySelectorAll.bind(document)
```
如果不知道为什么,js 可以重修一下
dtysky
2018-02-27 13:32:16 +08:00
func 不属于 obj,你存只是存了个引用,func 的 this 是调用时注入的。
lz 确实应该补补 js 基础……
DOLLOR
2018-02-27 13:37:25 +08:00
百度“ js 函数的四种调用方式”
wwjvtwoex
2018-02-27 13:54:51 +08:00
谢谢大家,正在回炉中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/433084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX