【09-23】js原型继承学习笔记
2016-09-24 23:53
771 查看
js原型继承学习笔记
function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a"; //原型中是否有key对应的属性 function hasPrototypeProperty(obj,key){ return !obj.hasOwnProperty(key) && key in obj; }
原型对象 构造函数
每一个对象的实例都有一个原型属性,该属性指向了构造函数的原型对象。同时一个函数也有一个原型属性,该属性指向该函数的原型对象,
原型对象包含了一个指向构造函数的指针,和定义在该原型上的其他属性
实例的属性可能会覆盖原型的属性,此时可以通过
delete b.a删除该实例的属性,此时再次调用
b.a则指向的是函数原型的
a属性。
实例有一个从
Object继承的
hasOwnProperty()方法,该方法只会在实例中检索属性,而不会在原型对象中查找,
b.hasOwnProperty(a)
Object有一个
Object.getPrototypeOf(instance)方法,可以获取实例的原型对象。
Object.getPrototypeOf(b)==funA.prototype
函数表达式
//使用函数表达式,避免递归调用时函数名改变 var f=(function f(num){ if(num==1){ return 1; }else{ return num*f(num-1); } }); //jquery1.x源码 (function( window, undefined ) { //用一个函数域包起来,就是所谓的沙箱 //在这里边var定义的变量,属于这个函数域内的局部变量,避免污染全局 //把当前沙箱需要的外部变量通过函数参数引入进来 //只要保证参数对内提供的接口的一致性,你还可以随意替换传进来的这个参数 "use strict"; window.jQuery = window.$ = jQuery; })(window);
闭包
function createFunctions(){ var result=[]; for(var i=0;i<10;++i){ result[i]=function(){ return i; } } return result; } //输出全为10,返回的函数共享同一个闭包作用域中的实例变量i createFunctions().forEach(function(f){console.log(f())});//10 //新的实现 function createFunctionsNew(){ var result=[]; for(var i=1;i<=10;++i){ result[i]=function(num){ return function(){ return num; } }(i);//按值传递参数 } return result; } //返回符合逻辑的结果 createFunctionsNew().forEach(function(f){console.log(f())});//10
闭包中的this
var name="name of window"; var object={ name:"name of object", getName:function inner(){ return function(){ return this.name;//此时访问的是inner的this作用域,找不到是访问global中的name }; } }; console.log(object.getName()());//"name of window"; //new var object={ name:"name of object", getName:function inner(){ var innerThis=this; return function(){ return innerThis.name;//缓存外部函数的作用域 }; } }; console.log(object.getName()());//"name of object";
js没有块级作用域
function get(count){ for(var i=0;i<count;i++){ console.log(i); } console.log(i); } get(2);//0 1 2,跟c、Java等不一样
js的特点
/* * 没有块级作用域 * 函数可以作为返回值 * 变量可以重复声明和定义 * 闭包 * 原型继承 */
相关文章推荐
- JavaScript高级程序设计(第2版) 学习笔记:(六)js基于构造函数与原型的继承
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
- 2016.06.15廖雪峰JS__学习笔记(原型继承)__P9
- HTML5学习笔记(十六):原型、类和继承【JS核心知识点】
- JavaScript 的原型继承与类式继承学习笔记
- JS学习笔记02-初识原型
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第29讲_二维数组转置_js面向对象编程介绍 类(原型对象)和对象_学习笔记_源代码图解_PPT文档整理
- JS 学习笔记--13---原型
- Java菜鸟学习笔记(23)--继承篇(二):继承与组合
- JavaScript高级程序设计(第2版) 学习笔记:(三)js原型的四种形态
- JS原型学习笔记
- 韩顺平 javascript教学视频_学习笔记12_js面向对象编程介绍_类(原型对象)和对象
- JavaScript学习笔记-原型继承
- JS学习笔记03-初识继承
- 韩顺平 javascript教学视频_学习笔记23_js事件驱动机制深入理解_js常用事件_js版计算器
- js:语言精髓笔记7----原型继承
- js学习笔记 理解原型对象
- 前端攻城狮学习笔记五:继承、原型、setInterval、数组去重
- 《Javascript高级程序设计》(第2版)学习笔记09--继承机制
- JS继承学习笔记1