美文网首页
js高级程序设计阅读摘录4

js高级程序设计阅读摘录4

作者: day_day_up | 来源:发表于2017-10-16 13:34 被阅读0次

自定义函数实现sort排序(排查诡异默认排序)

function createComparisonFunction(propertyName) {
   return function(object1, object2){
     var value1 = object1[propertyName];
     var value2 = object2[propertyName];
      if (value1 < value2){
         return -1;
         } else if (value1 > value2){
             return 1;
         } else {
             return 0;
           }
        };
 } 

//demo
var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
data.sort(createComparisonFunction("name"));
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary 

函数内部属性

在函数内部,有两个特殊的对象:arguments 和 this

//阶乘算法
function factorial(num){
   if (num <=1) {
     return 1;
     } else {
         return num * factorial(num-1)
     }
} 

//arguments.callee() 已经废弃不太推荐使用
function factorial(num){
   if (num <=1) {
     return 1;
   } else {
       return num * arguments.callee(num-1)
   }
} 

ECMAScript 5 也规范化了另一个函数对象的属性:caller。除了 Opera 的早期版本不支持,其他浏览器都支持这个 ECMAScript 3 并没有定义的属性。这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为 null。例如:

function outer(){
 inner();
}
function inner(){
 alert(inner.caller);
}
//outer(); 


function outer(){
 inner();
}
function inner(){
 alert(arguments.callee.caller);
}
//outer(); 
IE、Firefox、Chrome 和 Safari 的所有版本以及 Opera 9.6 都支持 caller 属性。

当函数在严格模式下运行时,访问 arguments.callee 会导致错误。ECMAScript 5 还定义了arguments.caller 属性,但在严格模式下访问它也会导致错误

函数属性和方法

ECMAScript 中的函数是对象,因此函数也有属性和方法。每个函数都包含两个属性:length 和 prototype。length 属性表示函数希望接收的命名参数的个数,如下面的例子所示。

function sayName(name){
 alert(name);
}
function sum(num1, num2){
 return num1 + num2;
}
function sayHi(){
 alert("hi");
}
alert(sayName.length); //1
alert(sum.length); //2
alert(sayHi.length); //0 

call()方法与 apply()方法的作用相同,它们的区别仅在于接收参数的方式不同。对于 call()方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用
call()方法时,传递给函数的参数必须逐个列举出来

字符串转number陷阱

http://mp.weixin.qq.com/s/TJSje91ttw1ZZKziGYDC9Q

相关文章

  • js高级程序设计阅读摘录4

    自定义函数实现sort排序(排查诡异默认排序) 函数内部属性 在函数内部,有两个特殊的对象:arguments 和...

  • js高级程序设计阅读摘录2

    检测数组 对于一个网页,或者一个全局作用域而言,使用 instanceof 操作符就能得到满意的结果: insta...

  • js高级程序设计阅读摘录1

    1. typeof获取未定义的变量也为undefined 2.typeof判断数组类型的缺陷 第一钟解决方案[] ...

  • js高级程序设计阅读摘录3

    迭代方法  every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。...

  • js高级程序设计阅读摘录5

    num.toFixed() 能够自动舍入的特性,使得 toFixed()方法很适合处理货币值。但需要注意的是,不同...

  • JS转义字符

    摘自《JS高级程序设计》

  • JavaScript 基础:关键操作符的各种规则

    最近在阅读《JavaScript 高级程序设计(第三版)》,通过阅读它来学习 JS 知识,本文大部知识内容分来自此...

  • JavaScript 基础:函数

    最近在阅读《JavaScript 高级程序设计(第三版)》,通过阅读它来学习 JS 知识,本文大部知识内容分来自此...

  • js常见知识漏洞整理

    前言 本文主要摘录《js高级程序设计》,也就是我们常说的红宝书,其中一些比较少见的知识点,处理技巧。 知识点列表 ...

  • 前端知识体系

    1.JS基础 5 2.JS高级 5JS高级程序设计,各种api的应用,es6新增api的运用 3.CSS...

网友评论

      本文标题:js高级程序设计阅读摘录4

      本文链接:https://www.haomeiwen.com/subject/vdrkuxtx.html