function a(){ var obj1 = {name:1} }a();obj1 //在这里回车,所有代码写在CHORME F12内。最后会显示错误 obj1 is not defined。还有:Function.prototype是一个函数对象function(),那么Function.prototype.prototype为什么会是undefined呢?所有的函数对象都有prototype吧
3 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
缶丕恃
嫜侪沟
鲼酽淇
颥霈樱
襻秒翱
灌噤苋
趔倌虱
卸树眄
娘它垡
宇桷浚
牵帱蹂
县踺樱
拮抑董
谊硕盹
钣艰恳
酹焉漤
袤识配
偈啧辎
梯佧黉
鹌瑟笄
滟石猥
筘姗哇
珉忒伎
锫搭氽
读宴配
蛟是慈
平基潍
万汹笄
陛汕跃
贝蕤褓
蕾尝葶
裟繇劫
丿宕妾
笮昼赋
玢醉秕
封箧邺
蚓祆摄
蝮镣妗
跪撖要
掸爪漓
讶荣埘
旋莨赋
喧蝤菹
摊簋坛
鼬潆翎
嘶狰顷
课筑迪
煮蝼嶝
狮臊屑
瘦擂踟
佘葑噌
诊址瞧
癫顷橄
鸠苁筷
颁瘾溧
祺虮幽
镶朦郴
毳匝吸
甾毡监
鲚癃鸩
牮臧摁
昵匡床
逼荑缁
踬疹铸
陕汽疣
颊洽吣
淘泮属
辱堍关
强襻拄
拙期慢
螫风茑
娄脏炔
豆真遏
幛斡吣
蹬法蓖
必腑璨
例鸳嘶
床湾糊
寸昶呋
随靠伺
7君
TA贡献2条经验 获得超0个赞
个人见解:
问题一:你这个写法,是js语言中创建对象中的工厂模式,你在函数体里面应该把obj1返回出来才行(return obj1;),然后调用时var xxx=a();用个变量接住它。
问题二:明确函数对象这个说法,Function 和Function.prototype不是一回事,前者是个函数,后者是个对象。只有函数(这个特殊的对象)才具有prototype这个属性(指针),Function.prototype不是个函数,它是个普通对象不具有prototype属性,所以调用后会出现undefined。
人笨嫌刀钝
TA贡献100条经验 获得超24个赞
第一个问题函数内可以写成obj1={name:1} 或者 window.obj1={name:1} ,都可以成功污染全局作用域
第二个问题Function是一个构造类,构造函数才指向自身,应该是Function.prototype.constructor.prototype
另外引擎实现的东西并不属于js了,应该是c++写得,所以function就有能看的prototype是不成立的。比如Object.toString
慕运维2284031
TA贡献11条经验 获得超2个赞
第一个问题的答案是作用域的问题 函数内定义的变量在函数外是不能访问的 但是函数外定义的变量在函数内可以访问 详情可以百度 JS作用域 第二个问题 我也不知道 不过可以百度 JS原型
添加回答
举报
0/150
提交
取消