论坛首页 Web前端技术论坛

javascript的值,对象,原型

浏览 9530 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-21  
achun 写道
csf178 写道
还有个小细节 其实
alert({}.constructor);在FF里也是可以的
{}.constructor;会有问题也是因为词法冲突 {}不在表达式中的时候会被认作语句块(而不是对象构造)


Object Literals

写道
An object literal is a list of zero or more pairs of property names and associated values of an object, enclosed in curly braces ({}). You should not use an object literal at the beginning of a statement. This will lead to an error or not behave as you expect, because the { will be interpreted as the beginning of a block.

 明确了这种用法是会产生错误的.这种用法也就成了语法错误了,也就是你说的解析时候造成词法冲突

 

嗯 是这个意思

另外 其实constructor并不是很准 因为constructor可以被修改

在FF中 __proto__ 属性是原型链

var t={__proto__:{a:1,b:2},c:3}

alert(t.a);//1

alert(t.b);//2

alert(t.c);//3

 

在JS中 new和函数的prototype可以看作是提供了一种用原型模拟类的方式

把拥有同一个原型的一组对象看作属于一个类

 

0 请登录后投票
   发表时间:2008-06-25  
lz想要说什么?
0 请登录后投票
   发表时间:2008-06-25  
soni 写道
lz想要说什么?

我想搞清楚几件事情,经过csf178的讨论,已经清楚了.就几句话.

 

javascript是基于原型(prototype-based )的语言.

javascript具有面向对象(Object-Oriented )的编程风格.

变量不一定是对象(undefined,null等就是特例,但是NaN是个对象)

对象一定有值,也有成员(函数,属性)

Object不是顶级的,因为可以delete Object

顶级的有:

Array Object
Boolean Object
Date Object
Function Object
Math Object
Number Object
RegExp Object
String Object

new运算符具有一定的魔术性,这个说法我语言上还组织不好.

0 请登录后投票
   发表时间:2008-06-25  
什么叫顶级的?是不是就是语言内建的叫顶级的?
0 请登录后投票
   发表时间:2008-06-25  
soni 写道
什么叫顶级的?是不是就是语言内建的叫顶级的?


我也是这么理解的.不过还是用官方的说法比较合适.
Predefined Core Objects

预定义核心对象,

问题是内建这个词没有一个定义,Object是系统一运行就建立的,算不算内建呢?

但是Objcet肯定不算Core Objects,因为官方列表中就没有.

 

0 请登录后投票
   发表时间:2008-06-25  
achun 写道
soni 写道
什么叫顶级的?是不是就是语言内建的叫顶级的?


我也是这么理解的.不过还是用官方的说法比较合适.
Predefined Core Objects

预定义核心对象,

问题是内建这个词没有一个定义,Object是系统一运行就建立的,算不算内建呢?

但是Objcet肯定不算Core Objects,因为官方列表中就没有.

 

好像没什么区别吧 这些都可以delete

Moz写的文档只是把Object单拿出来说了

 

不管怎么说ECMA现在比Moz更官方 ECMA现在是把它们放一起的

0 请登录后投票
   发表时间:2008-06-26  

还真的是实现有很大却别呀,
Moz和IE的实现当中

delete Object;
alert(typeof Object);
delete Function;
alert(typeof Function);

 还真不一样.这个世界可真乱呀!

 

0 请登录后投票
   发表时间:2008-06-26  
ECMA对这个倒是没明确规定
但是按照ECMA262的意思 Object Function Array等并非GlobalObject的特权属性 所以应该都可以正确删除
所以虽然标准没有明确的规定 也不应该认为是implementation dependent的

FireFox在此处显然属于实现错误
因为alert(delete Function);是true

说实话 如果你读了SpiderMonkey源码 你会对它有很深的绝望
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics