JS中令人发指的valueOf方法

作者:小菜 更新时间:2025-03-16 点击数:
简介:彭老湿近期月报里提到了valueOf方法,兴致来了翻了下ECMA5里关于valueOf方法的介绍,如下:15.2.4.4 Object.prototype.va

【菜科解读】

彭老湿近期月报里提到了valueOf方法,兴致来了翻了下ECMA5里关于valueOf方法的介绍,如下:

15.2.4.4 Object.prototype.valueOf ( )When thevalueOfmethod is called, the following steps are taken:1. Let O be the result of calling ToObject passing the this value as the argument.2. If O is the result of calling the Object constructor with a host object (15.2.2.1), thena. Return either O or another value such as the host object originally passed to the constructor. The specific result that is returned is implementation-defined.3. Return O.

规范里面的对于valueOf的解释很短,大致为:调用ToObject方法(一个抽象方法,后面会讲到),并将this的值作为参数传入。

针对调用ToObject时传入的不同参数(this),返回值分别如下:

1、this为宿主对象时,返回值取决于浏览器的实现,即不同浏览器的返回可能不同(关于宿主对象,可参考http://www.w3school.com.cn/js/pro_js_object_types.asp)

2、this不是宿主对象,则返回ToObject(this)的值

参数类型 返回结果Undefined抛出TypeError异常Null抛出TypeError异常Number创建一个Number对象,它内部的初始值为传入的参数值String创建一个String对象,它内部的初始值为传入的参数值Boolean创建一个Boolean对象,它内部的初始值为传入的参数值Object返回传入的参数(无转换)

根据Object.prototype.valueOf的定义,以及抽象方法ToObject的描述,可得下表

obj类型 Object.prototype.valueOf.call(obj)返回结果Undefined抛出TypeError异常Null抛出TypeError异常NumberNumber类型的对象,值等于objStringString类型的对象,值等于objBooleanBoolean类型的对象,值等于objObjectobj对象本身

举几个具体的例子:

var num = 123;console.log(num.valueOf()); //输出:123console.log(num.valueOf()); //输出:'number'var unde = undefined;console.log(Object.prototype.valueOf.call(unde)); //输出:'TypeError: Cannot convert null to object'var obj = {name:'casper'};var linkObj = obj.valueOf();linkObj.name = 'change';console.log(linkObj.name); //输出:'change' ...说明obj.valueOf()返回的是对象自身

实际上,上面没有提到Array、Function对象,根据下面代码可以猜想,当Object.prototype.valueOf调用时,参数为Array、Function类型的对象时,返回的结果也为对象自身:

var arr = [1, 2 ,3];var linkArr = arr.valueOf();linkArr[0] = ['casper'];console.log(linkArr); //输出:['casper', 2, 3]var foo = function(){ return 1; };var linkFoo = foo.valueOf();linkFoo.test = 'casper';console.log(linkFoo.test); //输出:'casper'

看完上面的描述,是不是有种恍然大悟的感觉?如果是的话,恭喜你,可能你跟我一样其实还没完全理解透彻。

简单举个例子,当调用Object.prototype.valueOf的对象为数值类型时,假设该对象是名称为num,num很有可能通过下面两种方式声明:

var num = 123; //通过对象字面量声明console.log(typeof num); //输出:'number'var num = new Number(123); //通过构造方法声明console.log(typeof num); //输出:'object'

更多变态声明方式,可参见《一眼毁三观:JS中不为人知的五种声明Number的方式》

关于返回值的说明,ECMA5里面原文如下:

Create a new Number object whose [[PrimitiveValue]] internal property is set to the value of the argument. See 15.7 for a description of Number objects.

按照这段文字的说明,似乎num.valueOf()返回的应该是个Number对象(非字面量声明的那种),但实际上:

var num = 123;var tmp = num.valueOf();console.log(typeof tmp); //输出: 'number'

这是怎么回事呢?于是又仔细翻看了下,似乎有些接近真相了:

5.7.4.4 Number.prototype.valueOf ( )

Returns this Number value.

The valueOf function is not generic; it throws a TypeError exception if its this value is not a Number or a Number object. Therefore, it cannot be transferred to other kinds of objects for use as a method.

原来Number有属于自身的原型valueOf方法,不是直接从Object.prototype上继承下来,类似的,Boolean、String也有自己的原型valueOf方法,归纳如下:

类型 是否有属于自己的原型valueOf方法Undefined无Null无Number有,Number.prototype.valueOfString有,String.prototype.valueOfBoolean有,Boolean.prototype.valueOfObject-

此处之外,Array、Function并没有自己的原型valueOf方法,见规范说明:

NOTE The Array prototype object does not have a valueOf property of its own; however, it inherits the valueOf property from the standard built-in Object prototype Object.

The Function prototype object does not have a valueOf property of its own; however, it inherits the valueOf property from the Object prototype Object.

补充说明:Number.prototype.valueOf的内部转换规则比想的要略复杂些,此处不展开。

啰啰嗦嗦说了一大通,现在还有两个问题存在疑惑:

关于ToObject,当参数为Function对象时,返回对象作何处理似乎没见到规范里明确说明,当前仅靠实验猜测(也有可能是我没找到)

valueOf的使用场景,实际开发中尚未见到有兄弟用过

中,令人,发,指的,valueOf,方法,彭老湿,近期,

施耐庵水浒传中108个好汉,仅有两人修成正果,变为神仙被世人拜祭

在《传》小说中,后期接受了朝廷的招安,为了向朝廷表明忠心,梁山泊好汉东征西讨,立下了大功,其中当初征讨损失最为惨重,方腊被擒住之后,才算真正大功告成,宋江便打算回朝接受朝廷封赏,但有些人都不愿意回朝廷了。

比如鲁智深、武松、林冲等人,他们已经看清朝廷的黑暗,便没跟宋江回去,还有、、等人也离开了,他们都算有个比较好的结局,但要说真正修成正果的,这108个好汉中只有两人,鲁智深虽然安详圆寂,可他并没受到后人拜祭。

第一个修成正果的是,外号,他的水性极好,可以在"水底下伏得七日七夜",宋江等人在白龙庙举事的时候,张顺便加入其中,后来跟随宋江上了梁山,后来征讨方腊时,他从西湖偷潜到涌金门,不料被敌军发现,直接被射死了。

张顺的死自然令梁上好汉心痛,可张顺死后他的事迹并没有结束,因为张顺的鬼魂飘到了西湖下的震泽龙宫,后来还成为金华太保,在水府龙宫中成了神,这才算真正修成正果,后来张顺的鬼魂还附在弟弟张衡身上,一刀劈死了方腊的儿子。

张顺死后成为龙宫的神,受到后人拜祭,还有另一个梁上好汉同样修成正果,他就是,外号鼓上骚,原本是个盗墓小贼,擅长飞檐走壁偷东西,他遇到、上梁山,便跟着两人一起去,不料途中被祝家庄抓住了。

后来杨雄、石秀上梁山请宋江攻打祝家庄,经过先后三次攻打祝家庄,终于救出了时迁,时迁上梁山之后,也立下过不少功劳,尤其是宋江接受朝廷招安后,他也跟着南征北战,方腊被平定之后,时迁突然染病去世了,结局也还算。

时迁虽然是个小毛贼,但他死后也被后人祭奠,尤其是在盗墓贼、毛贼等行业中,他们都把时迁当做本行业的祖师爷,放在案头日夜供奉,还把时迁称为"盗墓贼菩萨",虽然这个名声不太好听,可时迁毕竟受后人供奉啊,从这个角度来说,至少也比宋江强了。

张顺和时迁虽然没有燕青、李俊等人潇洒,可他们死后成神成仙了,后世还修建庙宇祭祀供奉他们,在梁山泊108个好汉中,似乎只有这两人有这样的待遇了,其他好汉估计应该都羡慕这俩人吧,你觉得呢? 随机文章魔克拉-姆边贝图片曝光,出没沼泽专杀河马(专家称是大象被误认)盘点百度不能搜的十件事,超重口味挑战你的忍耐极限(千万别手贱)新疆三十万镜像人事件真相,研究双鱼玉佩致使能量泄露出现复制人拉尼亚凯亚超星系团,半径5.2亿光年/质量是银河系10万倍泥石流到来前有何预兆,三种异常情况需引起警惕/附预防措施

流行性腮腺炎常见的并发症有哪些

常见的包括、、脑膜炎、和听力损失,需根据具体症状及时就医治疗。

流行性是由腮腺炎病毒引起的急性呼吸道,主要通过飞沫传播,常见于儿童和青少年。

并发症的发生与病毒扩散至其他器官有关,需根据病情采取对症治疗。

1.睾丸炎。

睾丸炎是流行性腮腺炎最常见的并发症之一,多发生于青春期后的男性患者。

症状包括睾丸肿胀、疼痛和发热,严重时可导致不育。

治疗以卧床休息、局部冷敷和使用止痛药物为主,如布洛芬或对乙酰氨基酚。

必要时可使用皮质类固醇减轻炎症。

2.卵巢炎。

卵巢炎多见于青春期后的女性患者,症状包括下腹疼痛、发热和恶心。

治疗同样以休息和对症治疗为主,可使用止痛药物缓解症状。

严重病例需住院观察,必要时使用抗病毒药物。

3.脑膜炎。

脑膜炎是流行性腮腺炎的严重并发症,表现为头痛、发热、呕吐和颈部僵硬。

需立即就医,进行腰椎穿刺确诊。

治疗包括静脉输液、使用抗病毒药物和皮质类固醇,必要时进行重症监护。

4.胰腺炎。

胰腺炎表现为上腹疼痛、恶心、呕吐和发热。

治疗以禁食、静脉输液和使用止痛药物为主,如吗啡或哌替啶。

严重病例需住院治疗,必要时进行手术干预。

5.听力损失。

听力损失是流行性腮腺炎的罕见并发症,多为一侧性,可导致永久性耳聋。

治疗包括使用皮质类固醇和抗病毒药物,必要时进行听力康复训练。

流行性腮腺炎的并发症多样且严重,需根据具体症状及时就医治疗。

预防措施包括接种腮腺炎疫苗、保持良好的个人卫生习惯和避免接触患者。

一旦出现并发症,应遵医嘱进行规范治疗,以减少后遗症的发生。

甲亢的并发症有哪些 回答:甲亢的并发症包括心血管疾病、骨质疏松和甲状腺危象,需通过药物、生活方式调整和定期监测进行预防和治疗。

甲亢(甲状腺功能亢进症)是由于甲状腺激素分泌过多引起的代谢亢进状态,若不及时控制,可能引发多种并发症。

心血管疾病是甲亢常见的并发症之一,甲状腺激素过多会导致心率加快、血压升高,增加心脏负担,可能引发心律失常、心力衰竭等。

骨质疏松则因甲状腺激素加速骨代谢,导致骨密度下降,增加骨折风险。

甲状腺危象是甲亢最严重的并发症,表现为高热、心动过速、意识障碍等,需紧急处理。

1. 心血管疾病的预防与治疗。

甲亢患者应定期监测心率和血压,必要时使用β受体阻滞剂(如普萘洛尔)控制心率。

对于严重心律失常或心力衰竭患者,需结合抗甲状腺药物(如甲巯咪唑)和心脏专科治疗,必要时进行心脏手术干预。

2. 骨质疏松的管理。

甲亢患者应定期进行骨密度检测,补充钙和维生素D以增强骨健康。

日常饮食中增加富含钙的食物(如牛奶、豆制品)和维生素D的食物(如鱼类、蛋黄),同时进行适度的负重运动(如步行、瑜伽)以促进骨密度提升。

3. 甲状腺危象的紧急处理。

甲状腺危象是一种危及生命的急症,需立即就医。

治疗包括使用抗甲状腺药物(如丙硫氧嘧啶)抑制甲状腺激素合成,β受体阻滞剂控制心率,糖皮质激素(如氢化可的松)缓解炎症反应,必要时进行血浆置换或手术治疗。

甲亢的并发症涉及多个系统,需通过综合治疗和长期管理来降低风险。

定期监测甲状腺功能、心血管状况和骨密度,结合药物治疗、饮食调整和适度运动,是预防和控制并发症的关键。

对于严重并发症,如甲状腺危象,需及时就医并采取紧急处理措施,以确保患者安全。

腮腺炎的早期症状 回答:腮腺炎早期症状主要表现在以下3个方面:1、大多患者会出现发热的症状,部分患者还会同时伴随有乏力和头痛的症状。

2、在出现发热症状后的1~2天,患者的腮部会出现肿痛的情况,多数患者首先会是一侧的腮部肿痛,然后逐渐蔓延到另一侧的腮部。

3、部分患者随着病情的发展还会出现一系些并发症,如少数患者会出现脑炎、睾丸炎或者卵巢炎等。

腮腺炎的早期症状 回答:腮腺炎早期症状主要表现在以下3个方面:1、大多患者会出现发热的症状,部分患者还会同时伴随有乏力和头痛的症状。

2、在出现发热症状后的1~2天,患者的腮部会出现肿痛的情况,多数患者首先会是一侧的腮部肿痛,然后逐渐蔓延到另一侧的腮部。

3、部分患者随着病情的发展还会出现一系些并发症,如少数患者会出现脑炎、睾丸炎或者卵巢炎等。

肝硬化门脉高压并发症 回答:肝硬化门脉高压并发症包括:第一就是胃底和食道静脉曲张破裂之后引起的出血,这个是肝硬化门静脉高压,最常见的也是最凶险的一个并发症。

第二个是上消化道出血,可能因为肝硬化食道胃底静脉曲张破裂出血引起,也可能是因为消化性溃疡或者是胃黏膜糜烂引起的出血。

甚至有一些病人会出现急性胃粘膜病变,那么出现门静脉高压以后,出现胃粘膜急性病变的机会更多。

要怎么治疗腮腺炎、用什么最快 回答:腮腺炎有病毒性和细菌性的两种,首先要查血看一看是哪种,化脓性的多见于一侧,红肿热痛比较明显。

从你作出的治疗来看,药物是将病毒性。

细菌性的都考虑到了。

用这几个药就行,急不能,疾病的彻底恢复一定需要有个过程。

要是想快点可以再看一看中医,吃点汤药。

要怎么治疗腮腺炎、用什么最快 回答:腮腺炎有病毒性和细菌性的两种,首先要查血看一看是哪种,化脓性的多见于一侧,红肿热痛比较明显。

从你作出的治疗来看,药物是将病毒性。

细菌性的都考虑到了。

用这几个药就行,急不能,疾病的彻底恢复一定需要有个过程。

要是想快点可以再看一看中医,吃点汤药。

良性腮腺混合瘤开刀是大手术吗 回答:良性腮腺混合瘤开刀一般属于大手术,最好去三甲医院进行检查,做出针对性的治疗,平时也要注意口腔的清洁卫生,手术后要注意多休息,避免剧烈的运动,饮食也要注意,吃一些营养含量比较丰富的食物,大多数需要一个月左右的时间可以恢复。

肋软骨隆鼻的并发症有哪些 回答:肋软骨隆鼻不能说全部是好处,它也有它的缺点。

有的病人会出现弯曲、钙化、变形、歪斜、移位。

这些并发症都是有可能出现的。

毕竟现在没有任何一种手术是零风险的。

出现了问题,患者们可以不用过于担心,只要不是很严重的问题,都可以去解决的。

腮腺炎病毒是dna还是rna 回答:腮腺炎病毒,是属于副粘病毒科的副粘病毒属,属于单股RNA病毒,呈球形直径大约是100到200nm之间,这种病毒对外界抵抗力低,紫外线、甲醛和56度温度均可灭活。

流行性腮腺炎病毒,或称腮腺炎病毒,能引起腮腺、舌下腺、颚下腺肿大、头痛、发烧,并能引起多种并发症,男性还易引起睾丸肿胀。

腮腺炎病毒是dna还是rna 回答:腮腺炎病毒,是属于副粘病毒科的副粘病毒属,属于单股RNA病毒,呈球形直径大约是100到200nm之间,这种病毒对外界抵抗力低,紫外线、甲醛和56度温度均可灭活。

流行性腮腺炎病毒,或称腮腺炎病毒,能引起腮腺、舌下腺、颚下腺肿大、头痛、发烧,并能引起多种并发症,男性还易引起睾丸肿胀。

腮腺炎会影响男性的生育吗 回答:腮腺炎一般不会影响到生育,但是腮腺炎如果治疗不及时的话,很有可能会侵犯到睾丸,从而引起睾丸炎,可能会对生育带来一定的影响。

腮腺炎多数是由于病毒感染引起的,会导致局部出现肿胀的情况,并且还有可能会引起发烧。

需要配合医生口服抗病毒的药物进行治疗,由于腮腺炎具有一定的传染性,因此在治疗期间最好能够进行隔离。

腮腺炎会影响男性的生育吗 回答:腮腺炎一般不会影响到生育,但是腮腺炎如果治疗不及时的话,很有可能会侵犯到睾丸,从而引起睾丸炎,可能会对生育带来一定的影响。

腮腺炎多数是由于病毒感染引起的,会导致局部出现肿胀的情况,并且还有可能会引起发烧。

需要配合医生口服抗病毒的药物进行治疗,由于腮腺炎具有一定的传染性,因此在治疗期间最好能够进行隔离。

怎样处理肠瘘并发症 回答:肠瘘引起并发症的时候,首先需要明确并发症的严重程度,然后根据并发症的具体类型给予治疗。

肠瘘时最先引起的是感染的症状,此时可以通过积极的抗感染治疗给予处理。

肠瘘还会造成肠道的吸收障碍,造成电解质的紊乱、酸碱失衡等情况,这时候需要检查相关的血液指标,给予适当的补充及调整。

肠瘘是一种比较复杂的疾病,能够引起多种不良表现,需要积极的给予治疗,以免影响病情进展。

早期可以先保守治疗,如果经保守治疗没有好转或者反复出现肠瘘,则需要手术治疗。

老年性眩晕容易产生哪些并发症 回答:老年性眩晕容易产生哪些并发症?老年性眩晕就是在老年人发生的眩晕。

第一个就是眩晕本身会出现一些胸闷心慌方面的情况。

有些人可能就会诱发,心脑血管病的发生。

第二个就是在眩晕的时候,可能会出现平衡觉的障碍然后造成一些跌倒摔伤这方面的一些并发症。

如果要是反复发作的眩晕会对人的心理影响特别的大,可能哪都不敢去对情绪的影响也很大。

膝骨关节炎会引起哪些并发症 回答:膝骨关节炎最严重的是关节软骨破裂,软骨退变,关节活动的缺失,造成关节的僵硬,还有膝骨关节炎患者股四头肌的萎缩无力,会引起老年人跌倒,伴发骨质疏松性骨折,最常见就是髋部的骨折。

髋部骨折致残和病死率是非常高的,所以特别要注意。

小孩接触腮腺炎病人会被传染 回答:腮腺炎属于病毒感染通常称之为流行性腮腺炎较多发生于幼儿或少年时期是有传染接触史的小儿患病后可终身免疫成人中也有发病。

建议可以早期找中医开一些清热解毒。

散结消肿的中药。

如用板蓝根、夏菇草蒲公英等煎水服用起到预防作用。

小孩接触腮腺炎病人会被传染 回答:腮腺炎属于病毒感染通常称之为流行性腮腺炎较多发生于幼儿或少年时期是有传染接触史的小儿患病后可终身免疫成人中也有发病。

建议可以早期找中医开一些清热解毒。

散结消肿的中药。

如用板蓝根、夏菇草蒲公英等煎水服用起到预防作用。

腮腺炎是什么症状 回答:腮腺炎在潜伏期的时候,并没有明显的症状,有人会出现头痛和食欲下降的现象,还可能伴有胃寒和身体发热以及全身不适,在发病的两天后,容易导致腮腺的部位出现肿痛,还可能导致体温在38℃到40℃左右。

所以当出现腮腺肿大的时候,要去医院进行就诊进行诊断,如果确诊是腮腺炎,一定要采取好隔离措施,因为本疾病有一定的传染性。

腮腺炎是什么症状 回答:腮腺炎在潜伏期的时候,并没有明显的症状,有人会出现头痛和食欲下降的现象,还可能伴有胃寒和身体发热以及全身不适,在发病的两天后,容易导致腮腺的部位出现肿痛,还可能导致体温在38℃到40℃左右。

所以当出现腮腺肿大的时候,要去医院进行就诊进行诊断,如果确诊是腮腺炎,一定要采取好隔离措施,因为本疾病有一定的传染性。

肝硬化的并发症都哪些呐? 回答:肝硬化一般是指肝细胞再次出现化脓,产生了纤维化的纤维化就会再次出现肝脏变小,就会压制下腔静脉构成腹水,同时还会构成全身性的驱毒功能上升,白蛋白的含量减低,一般是要做仔细检查来实施诊断,采取对症救治,如果说腹水比较明显的话,一般也可以采取刺击的方法来实施排涝。

必须强调声明同时需要适度的体育锻炼,不能劳累和熬夜,保持心情愉快,定期复查。

加入收藏
               

JS中令人发指的valueOf方法

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录