博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【09-23】js原型继承学习笔记
阅读量:5819 次
发布时间:2019-06-18

本文共 2127 字,大约阅读时间需要 7 分钟。

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,返回的函数共享同一个闭包作用域中的实例变量icreateFunctions().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";//newvar 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

js的特点

/** 没有块级作用域* 函数可以作为返回值* 变量可以重复声明和定义* 闭包* 原型继承*/

转载于:https://www.cnblogs.com/achievec/p/5898463.html

你可能感兴趣的文章
贪吃蛇
查看>>
EventSystem
查看>>
chrome不支持字体12px
查看>>
用WINSOCK API实现同步非阻塞方式的网络通讯
查看>>
vue
查看>>
玩一玩博客,嘿嘿
查看>>
P1352 没有上司的舞会
查看>>
img.onload与script.onload实现的不同写法
查看>>
ios11文件夹
查看>>
【HLOJ 559】好朋友的题
查看>>
DataSet用法3操作数据
查看>>
Electric Fence(皮克定理)
查看>>
【状压DP】【UVA11825】 Hackers' Crackdown
查看>>
nvl 在mysql中如何处理
查看>>
MyEclipse 快捷键
查看>>
快速傅里叶变换FFT
查看>>
大数据常用基本算法
查看>>
java面向对象1
查看>>
网站页面直接跳转到别的页面
查看>>
JavaScript学习笔记(十三)——生成器(generator)
查看>>