`
北极的。鱼
  • 浏览: 159239 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JS大侠请入。一个古怪的问题

阅读更多

突然想到一段代码。如下:

 

function handler(){
    alert(this)
}

{}.test = handler;
{}.test()

 

按照我的思路,这个应该弹出object。

 

不过,结果很失望。在IE和FF下都报错。

 

和朋友们交流了一下,也没什么合理的解释,顾请各位路过的大侠们帮忙解答下。

 

大恩不言谢!!

0
2
分享到:
评论
7 楼 justjavac 2011-08-18  
justjavac 写道

{}.test = handler; 

这句话呢,{}被当成了代码块处理,所以,是语法错误SyntaxError。可以这样调整,
({}).test = handler;


{}.test()  

这句呢,无容置疑,肯定是错的。如果改变优先级呢,比如,想上一个一样,写成
({}).test()

这样,也是错误的,但是这次不是语法错误SyntaxError,而是类型错误TypeError,你可以这样试试,去掉最后面对函数调用,如下:
({}).test

此时的输出是undefined,对undefinited进行函数调用,肯定是错误的。
如果你想用匿名对象的话,可以这样:
({test:function(){alert(this);}}).test();
6 楼 justjavac 2011-08-18  
{}.test = handler; 
这句话呢,{}被当成了代码块处理,所以,是语法错误。可以这样调整,
({}).test = handler;
5 楼 北极的。鱼 2011-08-18  
JavaHack 写道
{}.test = handler; 
这句创建了一个对象

{}.test() 
下面又是一个新对象
所以报的错  应该是没有该属性


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

恍然大悟,呵呵,对的。多谢了。

不过,还是有问题。按照这么理解,应该是弹出undefined。不过,结果是什么都没弹出,并且报告脚本错误。
4 楼 JavaHack 2011-08-17  
{}.test = handler; 
这句创建了一个对象

{}.test() 
下面又是一个新对象
所以报的错  应该是没有该属性

3 楼 北极的。鱼 2011-08-17  
xuedong 写道
不太理解{}.test = handler; 这个是什么用法了


==============================
为了改变handler函数内部this指针的指向。
这个有问题???
2 楼 xuedong 2011-08-17  
不太理解{}.test = handler; 这个是什么用法了
1 楼 北极的。鱼 2011-08-17  
最新测试,chrome也报错。

相关推荐

    BBS大侠论坛ACCESS_C#论坛社区程序.rar

    【标题】"BBS大侠论坛ACCESS_C#论坛社区程序.rar" 涉及到的知识点主要...对于想要学习或了解论坛开发的人员来说,这是一个很好的实例,可以通过分析源代码和数据库结构,深入理解Access与C#在实际项目中的结合应用。

    大侠论坛8.1

    【大侠论坛8.1】是一个专为ASP.NET编程学习者设计的在线交流平台,它提供了丰富的学习资源和互动功能,旨在帮助用户提升ASP.NET技术能力。在这个版本中,我们可以看到多个关键页面,这些页面构成了论坛的核心功能,...

    DXBBS大侠论坛 v8.0 Build 0531.rar

    DXBBS大侠论坛是一款广泛应用于互联网社区的开源论坛软件,v8.0 Build 0531是其一个特定的版本,具有重要的更新和改进。这个版本可能包含了一些优化的功能,增强了用户体验,修复了已知的问题,以及提高了系统的安全...

    WebBrowser中JS和C++代码互相调用

    在Windows编程领域,WebBrowser控件是一个非常实用的组件,它允许开发者在应用程序中嵌入一个基于Internet Explorer渲染引擎的浏览器。这篇博客的配套文件主要探讨了如何在WebBrowser控件中实现JavaScript(JS)与...

    大侠论坛 繁体中文版_C#论坛社区程序.rar

    【大侠论坛 繁体中文版_C#论坛社区程序】是一个基于C#编程语言开发的论坛系统,专为用户提供互动交流的平台。这个程序集成了丰富的社区功能,旨在为用户构建一个稳定、易用且功能全面的网络社区。下面我们将深入探讨...

    vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)

    今天用vue+原生js的mousemove事件,写了个拖动,发现只能慢慢拖动才行,鼠标只要移动快了,就失效,不能拖动了; 搞了半天在,总算解决了,但是问题的深层原理还没搞清楚,知道的大侠可以留言分享,下面直接上代码:...

    AES加密算法的JS文件aes.js

    `aes.js`文件就是这样一个实现,它提供了一种JavaScript实现的AES加密和解密功能。 AES的工作原理基于替换和置换两种操作,它使用相同的密钥进行加密和解密。AES标准定义了四种不同的块大小(128位)和三种不同的...

    react js资源 渐进式包

    React.js 是一个流行的JavaScript库,用于构建用户界面,特别是单页应用程序(SPA)。它采用组件化的方式,使得代码可重用且易于维护。渐进式包通常是指那些可以逐步引入和扩展的库或框架,React.js 正是这样一个库...

    自己做的一个网络课程网站(部分代码)

    【描述】:“自己做的一个网络课程网站,欢迎大家前来下载,本人刚入门,很多地方做得不是很好,也请大侠们指教” 描述中提到开发者是初学者,这意味着代码可能包含了一些初级错误或者不那么优化的设计。同时,它...

    大侠BBS V6.1 正式版 Build 1023

    如有需要请与我们联系》》二:安装使用说明第一步:将所有文件上传到你的服务器空间。第二步:如果你放论坛程序的文件夹是虚拟主机的根目录,请跳过这一步,如果不是,将BIN文件夹移到虚拟空间根目录。第三步:如果...

    大侠论坛 DXBBS V7.0 AC免费版

    如有问题,请到官方论坛http://www.dxbbs.com提出。 7.0新功能说明: 1。加入论坛IP过滤功能,可以禁止指定的IP访问论坛。 2。加入脏字过滤功能,可以对论坛发贴内容中的某些字符进行指定的转换。 3。加入特色引用...

    node.js的windows下的安装包:node-v18.19.0-x64windows安装包

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者在服务器端使用 JavaScript 进行编程。这个安装包“node-v18.19.0-x64windows安装包”是专门为运行在 Windows 操作系统的 64 位计算机设计的...

    JavaScript中数组添加值和访问值常见问题

    通过本文给大家介绍关于数组方面的一些小问题,或许对大家有点帮助,本文写的不好,还请各位大侠见谅。 1. // var arr = [,,]; // arr[bbb]=nor ; // arr[-]=nor ; // console.log(arr); >> [, , , bbb: nor , -: ...

    给Adobe Reader XI添加中文书签功能

    不少朋友在用Adobe Reader XI看PDF书时都感觉没有书签功能很不方便,因此不少人都改用Foxit了。... 至于还有其他什么问题欢迎进行沟通交流,只是本人小白一个,技术问题更是没辙,所以不要抱太大希望。

    刚出来的空间爬虫

    对于想要学习网络爬虫,特别是空间爬虫的人来说,这是一个很好的起点,尽管它可能还存在一些初学者常见的问题和不足。通过阅读源代码和说明,可以学习到如何构建一个基础的爬虫,以及如何处理网络数据。同时,这也...

    Chrome 27.0

    "2013年最风骚网页游戏,永久免费还送礼包(龙将2,大侠传,烈火战神,街机三国等).url"是一个网址链接,显然指向2013年流行的免费网页游戏。这可能是浏览器发布时附带的一个推广内容,旨在吸引用户通过Chrome浏览器体验...

    三款非常好用的扒站软件合集 网站克隆软件 仿站必备.zip

    网站克隆和仿站是网页开发中的一个环节,主要用于快速构建与现有网站相似或完全一样的站点,这在学习、研究或者快速搭建原型时非常有用。本压缩包包含的"三款非常好用的扒站软件合集 网站克隆软件 仿站必备"提供了...

    Android中webview和js之间的交互调用

    android 4.4 之后的版本,由于Android安全机制的升级,js注入漏洞解决方案,导致之前JS和Android交互的方法失效了,该demo很好的解决了最新版本Android和js之间互相调用的问题,支持最新的Android版本调用,包括华为...

    从零开始——构建你的前端知识框架

    Node.js是一个JavaScript运行环境,它让开发者能够在服务器端使用JavaScript。通过Node.js,可以进行文件系统操作、构建服务器、实现WebSocket等。Express.js是常用的Node.js框架,用于快速构建Web应用。 Vue.js是...

    ajax快速通道

    的时候,他其实并非在探索一个全新的、未知的领域,而是有很多脉络可寻,也 很多已知可以帮助他们快速了解未知。 三、技巧,面对同样的未知,面对同样的难题,新手们一筹莫展,而老手们 却掌握着更多的技巧和手段,...

Global site tag (gtag.js) - Google Analytics