论坛首页 Web前端技术论坛

JavaScript 对象性的构造分析 - 从现象到本质

浏览 25162 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-06-20  
再随便给你挑几个地方

引用
在Sample1中,我们测试了JavaScript的4种对象定义方式:
var f1 = {},
var f2 = new Object(),
var f3 = function() {},
var f4 = new Function()


JS里面并没有什么对象定义的说法 Object RegExp Array对象都有literal 分别是
{ },/ /g,[ ]
而Function对象则是有类似literal的Function表达式
function(){}
构造对象要么直接用上面的语法 要么就用new

你这样把这4个拿出来 虽然不能算错 但是应该说理解方向有偏差
0 请登录后投票
   发表时间:2008-06-20  
引用
虽然{}, Object, Function, function都是JavaScript的保留字

其实只有function是JavaScript的保留字
{}是对象literal语法
Object和Function是内部函数名
0 请登录后投票
   发表时间:2008-06-20  
csf178说得没错,请楼主严谨一些,
不可思议的是JE编辑,即使是JE编辑我也要说, 这贴怎么能是精华帖啊?吓走观众啊!
0 请登录后投票
   发表时间:2008-06-20  
KKFC 写道
csf178说得没错,请楼主严谨一些,
不可思议的是JE编辑,即使是JE编辑我也要说, 这贴怎么能是精华帖啊?吓走观众啊!

我想是觉得楼主精神可嘉 这篇东西应该是花了很大精力的
0 请登录后投票
   发表时间:2008-06-20  
说白了,javascript的对象是伪对象,实际上是关联数组,所以可以用. 或者[]的方式来访问属性
0 请登录后投票
   发表时间:2008-06-20  
charles_zuo 写道
说白了,javascript的对象是伪对象,实际上是关联数组,所以可以用. 或者[]的方式来访问属性

不是!!你说hash我还没那么气!
0 请登录后投票
   发表时间:2008-06-21  
KKFC 写道
charles_zuo 写道
说白了,javascript的对象是伪对象,实际上是关联数组,所以可以用. 或者[]的方式来访问属性

不是!!你说hash我还没那么气!


没错,prototype的文档里面说过,JavaScript所有的对象实际上都是Hash;但是Hash增加很多功能,让你可以枚举键和值,在键/值对上迭代,将两个哈希合并,将哈希编码成一个查询字符串表达式,等等。
0 请登录后投票
   发表时间:2008-06-21  
var x = function (){}是一样的。x最终的构造结果也是function anonymous(){}

晕, 另外 instanceof 干嘛用的?
0 请登录后投票
   发表时间:2008-06-21  
一直觉得这种写法对JS是一种负担

constructor
new Function...

特别是这种代码最好不要写
var f4 = new Function("return function(){this.constructorMark =\"It is oo4's constructor\"}");  


完全没必要这样写。。。

JS可以写得很简单、很重用、很有结构性
这样的代码也不方便维护,调试起来太麻烦
0 请登录后投票
   发表时间:2008-06-23  
楼上的这种写法是有必要的,在某些情况下来说,呵呵。推荐看看周爱民的《javascript语言精粹与编程实践》,里面有讲
0 请登录后投票
论坛首页 Web前端技术版

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