• 关于 js资料prototype 的搜索结果

问题

prototype,Mootools,jQuery如何在一个页面里面共存啊?

a123456678 2019-12-01 20:21:39 829 浏览量 回答数 1

回答

简单直白一点儿就是,这就是 js 用类创建对象的方式,可以把 performance 看成是类名,然后 new performace 就是这个类生成的对象。var a = new performance,具体细节(简化的)是:创建一个对象,`objobj.[[prototype]] = perfomance.prototype; `// 这个属性原本不可以用 js 访问,后来 w3c 把它添加到了标准中,后来使用了新的接口所以又去掉了,但是在 firefox 和 chrome 实现也保留了这个属性叫做 __proto__,你可以在他们的调试窗口看到。令this = obj,然后执行 perfomance中定义的代码;假设上一步perfomamce的返回值是'ret'。 如果 ret是对象,那么 a = ret, 否则 a = obj;然后就是访问 a 的属性(读取,先不谈写入)的时候,给出一个属性,calculate,首先看 a.calculate 是否存在,如果不存在就试图访问 a.[[prototype]].calculate,如果还不存在就访问a.[[prototype]].calculate。。。。这就是 js 的原型链,自己百度找其他参考资料(为什么有人一次又一次的问这个问题)所以你的代码就是a.calculate 就是 a.[[prototype]].calculate 也就是 perfomance.prototype.calculate

小旋风柴进 2019-12-02 02:24:05 0 浏览量 回答数 0

回答

两个都没有错,Class.<function_name>=function(){}这种方式,一般拿来写一些类的静态方法。比如像Java里边的String.format()就可以用String.format=function(str){returnstr}这种方式实现。 Class.prototype.<function_name>=function(){//whatever}这种方法是扩展对象的方法,这里的function可以访问实例(instance)的this变量。 要访问这个函数必须new下。用实例来访问 classInstance.<function_name>=function(){}这种方式是动态附加一个函数在这个实例(instance)上,没有什么实际作用,个人认为。 一般classInstance.<property>这种方式会用的比较多,动态添加变量的属性。 -------------- 由于这部分比较侧重于OOP(面向对象)的js写法,所以在这个语境下我用Class来代替Fuction描述。回复 @wnow20:能解决问题,解答疑问就好,是不是最佳答案不是重点回复 @mr-zhuo:嗯嗯,是的,不过现在又多了个问题Object.prototype.fn为什么能被静态调用,而PrivateClass.prototype.fn不能静态调用PrivateClass.fn();//error回复 @mr-zhuo:能这样理解么,如下:只有Object.prototype.fn定义的原型变量的函数,任何类都可以静态调用?回复 @wnow20:应该这样理解Object是整个js所有类型的基类,包括它自己在Object.prototype下定义的所有方法和属性,都会被继承varx=1;x.fn();//一样能调用,因为x是Number类型,Number继承了Object.prototype的方法回复 @mr-zhuo:回复 @mr-zhuo:我这里测试可以的,代码具体如下:"usestrict"Object.prototype.fuck=function(){return111;}console.log(Object.fuck()); WhatisObject 你是想为object定义一个f**k属性,而object你并没有定义。js也不会为你默认去创建一个对象。 varobject={}; //这里定义一个空的对象 object.fuck=xxxx //为该对象添加一个属性你好像没有说清楚两者的区别。规则就是规则,没有为什么嗯嗯,你说的很对,可是我想知道具体是哪个语法,这样我才能查资料学习。你知道是什么语法么?上面那个在什么浏览器上会报错?没报错啊googlechrome,其它的我没试过,估计是语法 不懂就别回答,误人子弟。 前端正因为不懂却还非要插一脚的人太多,搞得别人都不信任这个职位了。 楼主也不要问这些问题,没什么高手来答的,只会引来搅屎棍。 这本书不错,http://book.douban.com/subject/10546125/,不打算一辈子不懂,就把它啃完。回复 @wnow20:权威指南跟api说明没啥不一样。如果你懂基本语法。果断高级程序设计。。经典书目。。2本都很好,一本叫宝典,一本叫经典回复 @铂金小江:嗯嗯。是的额,哦,谢谢,我刚正在看《JavaScript权威指南》,两本书哪本好呀?回复 @wnow20:都看完,自然会知道哪个好。靠自己。语法肯定是错误的,Object是js里的对象,你这样引用当然不对了回复 @mr-zhuo:是的,没错这个语法应该没错吧 Object是JavaScript里的一个function,我们一般叫它构造函数。 typeofObject==="function"//true 虽然『在JavaScript里一切都是对象』,但是对函数使用『.』操作符将不会产生任何效果。 functionA(){};A.b=1;//undefinedconsole.log(A);//functionA(){} 通过new操作符调用构造函数,就能产生一个新的对象。 functionA(){};vara=newA();//a是一个对象,A是构造函数 这时再通过『.』操作符给对象a增加属性就和普通的对象操作无异了。A.b=1;//成立的,而且也是有效的你说Object是function,那你说的不是矛盾么? 引用来自“Lightning_Strike”的评论 两个都没有错,Class.<function_name>=function(){}这种方式,一般拿来写一些类的静态方法。比如像Java里边的String.format()就可以用String.format=function(str){returnstr}这种方式实现。 Class.prototype.<function_name>=function(){//whatever}这种方法是扩展对象的方法,这里的function可以访问实例(instance)的this变量。 要访问这个函数必须new下。用实例来访问 classInstance.<function_name>=function(){}这种方式是动态附加一个函数在这个实例(instance)上,没有什么实际作用,个人认为。 一般classInstance.<property>这种方式会用的比较多,动态添加变量的属性。 -------------- 由于这部分比较侧重于OOP(面向对象)的js写法,所以在这个语境下我用Class来代替Fuction描述。functionClass(){};Class.prototype.fn=function(){/*code*/}Class.fn();//error直接输这一段代码,不输上面那一段,应该是报错的是的,Class.fn()调用的还是Object.prototype.fn这里定义的函数 Object.prototype.fn=function(){return"thisisObject'sfunction";}functionClass(){}Class.prototype.fnx=function(){return"thisisClass'sfunction";}vartest=newClass();test.fny=function(){return"thisistest'sfunction";};test.fny();//直接运行test.fny方法test.fnx();//先查找test有没有fnx属性,有直接执行,没有就找test的构造函数Class.prototype有没有这个fnx,有就执行Class.prototype.fnx();test.fn();//先查找test有没有fn属性,有直接执行,没有就找test的构造函数Class.prototype有没有fn,还是没有,继续找Object.prototype.fn,然后执行,如果Object.prototype.fn还是没有,报错/*PrivateClass.prototype.fn不能静态调用PrivateClass.fn()因为调用PrivateClass.fn的时候,先判断PrivateClass有没有fn方法,没有就找Object.prototype有没有fn方法如果是varx=newPrivateClass();x.fn就会先看PrivateClass.prototype.fn存不存在所以x.fn();就会不报错*/

爱吃鱼的程序员 2020-06-20 16:47:46 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

私有的是拿不到的 只能供里面使用function F() { this.list = []; this.method1 = function(){// 这里面是获取的 list 的 } } F.prototype.method = function() { this.list // 这样就可以获取了 }你可以看下JS 的原型模式+构造模式(混合模式)的相关资料

小旋风柴进 2019-12-02 02:14:09 0 浏览量 回答数 0

问题

【分享】WeX5的正确打开方式(3)——绑定机制

小太阳1号 2019-12-01 21:23:54 5393 浏览量 回答数 3
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SQL审核 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 人工智能 阿里云云栖号 云栖号案例 云栖号直播