1、valueOf与toString

会写前端JS的人不一定知道一些js内部运行时调用,如valueOf与toString,他们都在类型转换时或对象被运用来运算时转换时隐式调用他们,

这就像通常说的强制转换,而有时为了实现更适合自身的功能需要,重写了这两个方法。

javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外。

valueOf()函数的作用是返回该object自身。与toString()一样,定义类时可以实现新的valueOf()方法,从而返回需要的结果。

valueOf():返回最适合该对象类型的原始值;

toString(): 将该对象的原始值以字符串形式返回。

var abc={val:123,str:"zxc",valueOf:function(){console.log("valueOf");return this.val;},toString:function(){console.log("toString");return this.str;}
}

从上可知:

当对象运算时隐式调用valueOf,而为显示时调用toString转化为字符串展示。

函数柯里化

当函数不断处于调用时valueOf与toString会在最后返回值时被调用,所以可以使用在函数柯里化里。

function ff(a,b,c,d){return a+b+c+d;
}function ccc(fn){var fn1=function(){var args=Array.prototype.slice.call(arguments);var fn2=function(){var args2=Array.prototype.slice.call(arguments);return fn1.apply(null,args.concat(args2));}fn2.valueOf=function(){return fn.apply(null,args);}return fn2;}return fn1;
}ccc(ff)(1)(2)(3)(4) //10

js坑点

var b={xx:1}
var a=b
b.z=b={cc:23}

在es5的规范里赋值时从左到右的,先b.z={cc:23} 后 b={cc:23},所以b的引用变了,所以b.z不存在,而a还指向之前的地址,所以还可拿到地址里值。

var obj=(function(){var pp={a:"cc",x:"cc"}return function(key){return pp[key];}
})();Object.defineProperty(Object.prototype,"self",{get:function(){return this;}
})var xx=obj("self");

以上为当可以获取到对象属性时要获取闭包内目标对象方法。

但如果对象设置了pp.__proto__=null;那么就无法获取了。

转载于:https://www.cnblogs.com/zhangzhicheng/p/9716270.html

javaScript基本功001相关推荐

  1. javascript基本功

    隐式类型转换 var a = {_default: 0,toString: function () {return ++a._default} } if (a == 1 && a == ...

  2. JavaScript 习题及面试题 4

    495. [问答题] 兼容 IE 和 FF 的换行 CSS 推荐样式 ----------------------------------------------------------------- ...

  3. Day45--js基本小结

    JavaScript基本总结 一:基本背景 01:注:ES6就是指ECMAScript 6.(2015 ECMAScript6 添加类和模块) ECMAScript和JavaScript的关系 199 ...

  4. 前端开发怎么用php,做web前端开发怎么样?

    前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色.从狭义上讲,前端工程师使用 HTML.CSS.JavaScript 等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端.移动 ...

  5. 还没毕业就被阿里30万年薪预定,他凭什么?

    问一个很现实的问题,以你目前的薪资,多久能赚到100万? 在一线城市,年薪10万仅能饱腹,就算熬夜加班苦干10年达到100万,相信也所剩无几. 所以要想多赚钱,就要转变思路.勤奋努力,年薪30万还是并 ...

  6. 还没毕业就被阿里30万年薪抢定,他凭什么?

    [文末领取限免课程] 问一个很现实的问题,以你目前的薪资,多久能赚到100万? 在一线城市,年薪10万仅能饱腹,就算熬夜加班苦干10年达到100万,相信也所剩无几. 所以要想多赚钱,就要转变思路.勤奋 ...

  7. DataList:HTML5中的input输入框自动提示宝器

    DataList的作用是在你往input输入框里输入信息时,根据你敲进去的字母,自动显示一个提示下列列表,很像百度或谷歌的搜索框的自动提示,在飞机票火车票的搜索页面上也有这样的效果.它是HTML5里新 ...

  8. 前端_JavaScript_Vue

    Tips (1)项目仪表盘 在Vue-cli中,内置项目仪表盘 在本地文件中$vue ui打开 (2)创建项目 $yarn global add @vue/cli $ vue ui vue-route ...

  9. 学习web前端,合理的学习路线,如何成为一个合格的前端工程师

    学习前端,首先应该列举出整个前端的知识图谱,然后制定一个合理的学习线路图,逐个击破,只要保持学习的热情和持之以恒,肯定能成为一位合格的前端工程师.前端算是目前互联网研发岗中门槛相对较低的,只要具备完整 ...

最新文章

  1. “含光”剑出,谁与争锋?阿里重磅发布首颗AI芯片含光800
  2. 4)线性表[顺序表和链表]
  3. (视频+图文)机器学习入门系列-第10章 人工神经网络
  4. python 数据字典用法_python数据字典的操作
  5. ssh免密码登陆(三个节点master slave1 slave2)详细带命令版
  6. 几种可以不用过于投入精力去交往的人脉
  7. oracle查看分区表
  8. Spring整合Quartz
  9. 产品经理面试题汇总(1)
  10. 获取网站url ico小图标
  11. C# Socket简单例子(服务器与客户端通信)【转】
  12. 钛资本研究院:全球产业链重构下的芯片机遇
  13. 【操作系统概念-作业9】Virtual Memory
  14. VMware14 kali linux安装教程
  15. 给ecmall添加积分购物的功能
  16. 同时买票是怎么实现的_候补购票和抢票有什么不同 候补购票和抢票能同时进行吗...
  17. Android:上海垃圾分类必备,图像识别垃圾分类app的制作
  18. 如何引流至企业微信社群
  19. STO不会火,比特大陆不会死,币安会去非洲:区块链行业的63个预测
  20. html里有序列表标签怎么表示,HTML——列表标签

热门文章

  1. C语言求m中n个数字的组合
  2. 网站推广专员浅析网站推广期间如何降低网站优化短板威胁?
  3. 网络营销专员浅析现阶段下的几种网络营销推广方式
  4. 网站建设难?三个技巧来帮你!
  5. 计算机专业的个人实习报告范文,大学计算机专业的个人实习报告范文
  6. python办公自动化excel_简直出神入化,教你用Python控制Excel实现自动化办公
  7. 开发日记-20190801 读书笔记《Linux 系统管理技术手册(第二版)》关键词logrotate 管理日志文件
  8. 重构-改善既有代码的设计 读书笔记
  9. TensorFlow alexnet在华为Mate10上运行方法
  10. 外媒:高通指控苹果窃取其芯片机密信息!