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

本文共 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

你可能感兴趣的文章
意法半导体嘴硬:我们有三大业务 苹果砍订单影响不大
查看>>
涨价停不下来?最主要的元凶还是闪存
查看>>
MySQL Group Replication 学习笔记
查看>>
并发性能测试程序编写
查看>>
Oracle Database 12c - Global Data Services
查看>>
全球微型逆变器霸主Enphase要夺回失地
查看>>
【MySQL】磁盘写满之后,数据库show status受到阻塞的原因
查看>>
技术分析:存储混合云优点和挑战
查看>>
IT行业从业者如何在ERP行业发展?
查看>>
A16Z 750万美元投资分布式文件系统 Tachyon
查看>>
c++中指针常量,常指针,指向常量的常指针区分
查看>>
《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一第1章 速卖通入门第一步——开通账户...
查看>>
攻击者利用 Shellshock 漏洞入侵邮件服务器
查看>>
《Abaqus GUI程序开发指南(Python语言)》——2.7 if条件语句
查看>>
《软件建模与设计: UML、用例、模式和软件体系结构》一一2.6 状态机图
查看>>
《Adobe Illustrator CC经典教程》—第2课2.1节简介
查看>>
《Android 游戏开发大全(第二版)》——导读
查看>>
随机数是骗人的,.Net、Java、C为我作证
查看>>
深层学习:心智如何超越经验2.2 认知结构:基本要素
查看>>
如何使用 Datadog 监控 NGINX(第三篇)
查看>>