安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式字符串.每个类在内部都有一个[[Class]]属性,这个属性中就指定了各个类型的构造函数名. 使用这种方法判断值属于什么类型最可靠:比如: function isArray(value){ return Object.prototype.toString.call(value)=="[object Array]"; } function…
javascript高级技巧 变量作用域和闭包 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X…
由于JavaScript共享的特性,任何对象都可以被放在同一环境下运行的代码修改. 例如: var person = {name:"caibin'} person.age = 21; 即使第一行定义了完整的person对象,那么第二行代码仍然可以对其添加属性,删除属性等. 我们有三个方法可以防止你做出这些行为. 一.不可扩展对象: 先来看person本身的扩展性: Object.isExtensible(person); // true 接下来执行: Object.preventExtensio…
  1 <!DOCTYPE html>   2 <html>   3 <script src="./jquery-1.7.2.js"></script>   4 <head>   5     <title></title>   6 </head>   7 <body>   8 <input type="text" name="type"…
1.预解释 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>预解释1</title> <script type="text/javascript"> /*js中的数据类型:*/ //1.基本数据类型:(按照值来进行操作的) //number,string,Boolean,u…
不可扩展对象 默认情况下,所有对象都是可扩展的,使用Object.preventExtensions()方法可以改变这一行为. var person = { name: "Hiram" }; Object.preventExtensions(person); person.age = 29; alert(person.age); //undefined 虽然不能改对象添加新成员,但仍然可以修改和删除已有的成员,使用Object.isExtensible()方法还可以确定对象是否可以扩展…
目录 一.高级函数 1-1 安全的类型检测 1-2 作用域安全的构造函数 1-3 惰性载入函数 1-4 函数绑定 1-5 函数柯里化 1-6 反函数柯里化 一.高级函数 1-1 安全的类型检测 想到类型检测,那么脑海里第一反应应该就是在 Javascript 的世界中到底有哪些类型(这真的是一个非常古老的问题了) 我们大致分为 2 类: 基本类型 和 引用类型 其中 基本类型 包括了: string.number.bool.undefined.null 其中 引用类型 包括了: Array.Fu…
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等引用类型 一步步学习javascript基础篇(4):面向对象设计之创建对象(工厂.原型和构造函数等模式) 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承) 一步步学习javascript基础篇(6):函数表达式之[闭包] 一步步学习javascript基础篇(7):…
分析: 无论是强类型语言c#.c++.java等语言,还是弱类型语言如Javascript,所有变量可以抽象为两种类型,即局部变量和全局变量. 全局变量:整个作用域可见. 局部变量:局部可见,退出作用域,就被GC销毁,回收空间. Code分析: //局部变量 function PartVary() { var n = 10; //表示局部变量,外部不可访问 } PartVary(); alert(n);//error //全局变量 function AllVary() { n = 10 //表示…
一.安全的类型检测 javascript内置的类型检测机制并非完全可靠,由于浏览器或者作用域等原因,经常会发生错误.大家知道,在任何值调用toString()方法都会返回一个[object Native ConstructorName]格式的字符串,每个类内部都有一个[class]属性,这个属性就指定了上述字符串中的构造函数名.例如 var value=[1,2,3,4,5] alert(Object.prototype.toString.call(value));//"[object Arra…