JavaScript之坑了我--闭包助力OOP之模拟私有成员属性
思维引导:(和java对比)? 由于函数体内声明的局部变量我们是无法访问的,这个特征类似java中的private 成员属性,所以我们可以将这些声明的局部变量看作private成员属性。Js中闭包的特性,让我们可以将function中的局部变量在函数体执行完毕后保留下来(即不让回收),如此一来就提供了思路给我们来模拟java的private成员。
JavaScript之坑了我--闭包原理不过如此
闭包的产生,就是为我们提供了操纵函数局部变量的方式!是不是很神奇?这在java中是我没有看见过的。分析:我们知道,计算机中的内存变量如果有被引用着的话,则系统是不会将之回收的。只要我们能够一直持有这个引用,则就可以令局部变量避免被回收——这是闭包概念成立的前提。
JavaScript之坑了我--instanceof的判断机制测试
原型链中的__proto__属性的作用非常大,是整个原型链串起来的根本,是整个原型继承体系的本质!!instanceof 就是根据原型链上的继承关系判断的。这个特点就和java的instanceOf相似了。我们来测试一下,instanceof的判断机制,
JavaScript之坑了我--一张图看尽原型及底层模拟
其实,在系统载入定义的(任何函数)function Person时,会同时执行:Person.prototype = new Object(); Person.prototype.constructor = Person; 两者的关系的建立是系统底层自动完成的。因此原型对象Person.prototype的所有初始属性都是从Object中继承而来,而Person类的实例对象的初始属性再继承自原型对象,即也是从Object中继承而来,此乃原型继承。是故,可以理解为:Object类是所有类的父类。
JavaScript之坑了我--JSON对象明析
JSON对象:(1) 三种常见的定义语法:Var p = {name : “luozhixiao”, age:33,say:function(x,y){alert(x+y+“”);}};Var p1 = {“name” : ”luozhixiao” , “age” : 33,”say”:function(x,y){alert(x+y+“”);}};Var p2 = {‘name’ : ”luozhixiao” , ’age’ : 33,’say’:function(x,y){alert(x+y+“”);}};属性名有没有引号都可以的!!!!!不过个人还是倾向于有引号!(1) 创建对象,我们往往有两种方式:构造器和使用JSON。这两者的区别如下:构造器创建:可以方便于公共属性的创建;?JSON创建:则可以省略构造器的定义。因此,当我们即将创建的一系列对象都需要某部分公共属性时,我们就应该通过构造器创建。否则使用JSON方式会便捷。
JavaScript之坑了我--面向对象预热
js面向对象:语言的发展:面向机器:同一个程序,一个机器就得写一次;面向过程:将程序的执行分解成多个步骤;面向对象:将程序的执行分解成多个事物;面向过程相对于面向对象的劣势: var name = “luozhixiao”; var age = 22;即使我们知道name,age是一个人的信息,我们发现,当人多的时候,我们无法通过name/age相应地获取到其对应的那个人的age/name。而面向对象的封装的思想却可以。function Person(){}var man_1 = new Person();man_1.name = “luozhixiao”man_1.age = 21;只要我们持有man_1,就可以获取name以及相应的同一个人的age。
JavaScript之坑了我--函数细节
1. 函数的声明三种:a. 普通直接方式:b. 变量初始化的方式:c. 原始方式:注意:c种方式能体现js中“函数也是对象,函数名是指针”。不过这种声明方式很损性能:第一次是ECMAScript代码,第二次是解析传入构造函数中的字符串;故少用。2. 由于函数也是对象,即变量,所以,我们可以将一个函数作为值进行传参。 js函数作为对象,要注意以下属性: 我们在浏览器console中 执行:? Object.getOwnPropertyNames( function(){….} );结果:? ["length", "name", "arguments", "caller", "prototype"]?解析: length: 函数的参数的个数name : 当前函数的名字:用在多个函数的循环中arguments : 一个类数组对象,包含着在函数运行过程中传入函数中的所有参数,其中一个属性cal
JavaScript之坑了我--定时器用法
原理: ?setTimeout(…)执行时,会向系统内存中抛出一个定时器对象,当指定时间到达时,定时器对象会执行加载的代码,然后自动消失。 var tempTimer = setTimeout(“alert(‘1’);”,3000);//获取定时器对象 定时器的清除:用于清除定时器对象 var tempTimer = setTimeout(“alert(‘1’);”,3000);//获取定时器对象 clearTimeout( tempTimer );
JavaScript之坑了我--BOM模型速知
我们开发中必须知道的几个BOM对象的属性
JavaScript之坑了我--事件模型细节
? 事件对象:事件发生时系统自动产生的对象,其内封装了此事件的所有信息。低版本IE:window.eventW3C :事件绑定时直接传参数 如:obj.onclick = function(event){};当事件触发时,浏览器会将事件信息封装到事件对象中,然后作为参数传递obj.onclick(event)并且执行之。 事件模型:指嵌套的多个元素都有绑定了同一种事件,当此事件发生时,事件发生的先后顺序是从最外层向最里层,还是从最里层到最外层。 html部分元素的默认行为及如何控制: 链接:点击后跳转 提交按钮:点击后提交
JavaScript之坑了我--事件绑定原理
javaScript事件绑定原理我的点滴积累和理解,哈哈!望指正!html元素事件绑定共两种方式:(1)行内式:(2)动态绑定:(目前做项目最流行的方式:元素、样式、事件分离,解耦!!!)(3)添加事件监听:当同一个html元素的同一个事件需要添加多个函数时使用。
JavaScript之坑我--数组原理探析
天翼商城后台大迁移,我在前端吃了无数亏,遂发奋恶补前端js中的数组声明时不需要指定数据类型,不强制指定长度,可以同时存储各种数据类型的数据。这在java中任何一个都是不可想象的。