章节:3.4 引用 【P22(页码)】
知识点:对象通过引用来传递,它们永远不会被传递

 var a_obj={a:1};var b_obj=a_obj;//b_obj是a_obj的引用b_obj.a=2;console.log(a_obj.a);//2

章节:3.5 原型 【P22】
知识点:每个对象都连接到一个原型对象,并且它可以从中继承属性。原型连接在更新时是不起作用的,当我们在对某个对象作出改变时,不会触及该对象的原型。

   Bb.prototype.a=3;Bb.prototype.b=4;Bb.prototype.aa=function (a,b) {console.log("22");};var a_obj=new Bb();console.log(Bb.prototype.a);//3console.log(a_obj.a);//3a_obj.a=2222;console.log(Bb.prototype.a);//3console.log(a_obj.a);//2222

章节:4.7 给类型增加方法 【P32】
给类添加的新的方法立刻被赋予到所有的值(对象实例)上,哪怕值(对象实例)是在新方法创建之前就被创建好了。

  Function.prototype.att1="11";Function.prototype.att2=function (a,b) {return a-b+10;};function Add(a,b) {return a+b;};Add.prototype.att1="att1";Add.prototype.att2=function (a,b) {return a-b;};console.log(Add.att1);//11console.log(Add.prototype.att1);//att1console.log(Add.att2(8,1));//17console.log(Add.prototype.att2(10,1));//9

从上面的例子可以看出,第一个控制台结果,Add中没有属性att1,于是去他的prototype所指向的原型函数中找,找到att1属性值为11;第二个控制台结果,由于设定了 Add.prototype.att1=”att1”;所以得到的结果就是“att1”。
通过下面这种方式,
例1:给 Function.prototype添加方法使得该方法对所有函数可用

  Function.prototype.method=function (name,func) {console.log("Function.prototype.method:"+this);//function Mumber(){}if(!this.prototype[name]){this.prototype[name]=func;}return this;};Number.method('integer',function () {console.log("integer:"+this);//-3.33333333..console.log(typeof this);//Object
//                return this>0?Math.floor(this) : Math.ceil(this);return Math[this>0?'floor':'ceil'](this);});
//            也可以直接用这用方式,但上面的方式更加简洁,避开了添加prototype
//            Number.prototype.integer=function () {//                return this>0?Math.floor(this) : Math.ceil(this);
//            };document.writeln(Number(-10/3).integer());

例2:

    Function.prototype.method=function (name,func) {if(!this.prototype[name]){this.prototype[name]=func;}return this;};function myFun() {}//给我自己写的函数添加新的属性retmyFun.method('ret',function () { return 'ret';});console.log(myFun.prototype.ret());
//            console.log(myFun().ret());console.log(Number.prototype);console.log(myFun.prototype);给JavaScript中本来就有的函数添加新的属性numNumber.method('num',function () {return 'num';});console.log(Number().num());console.log(Number.prototype.num());

结果:

如果把我注释的地方放开:

结论:给自己写的函数添加属性时,应该通过myFun.prototype.ret()这种形式访问而不是myFun.ret()。但是给JavaScript中本来就有的函数添加方法时两种访问形式都可以。至于为什么,可以从打印出来的两种函数的原型指向可以看出这两种函数的区别。

章节:4.12 模块 【P40】
使用函数和闭包来构造模块;摒弃全局变量的使用
章节:6.3 删除(数组元素) 【P60】
由于在JavaScript中数组就是对象,所以可以用delete运算符删除数组的元素
,但是会有一个问题,被删除的元素保留了他的位置,而值变为undefined,这其实是我们不希望看到的。
例:
var myArray=[‘a’,’b’,’c’,’d’];
delete myArray[2]; //[‘a’,’b’,undefined,’d’]
但是,JavaScript的数组有一个splice方法,第一个参数是数组中一个元素的序号,第二个参数是要删除的元素个数。
例:
myArray.splice(2,1); //[‘a’,’c’,’d’]
章节 附录A
1.typeof不能识别Object和null
typeof null //返回的是‘Object’
typeof不能识别NaN和number
typeof NaN //返回的是‘number’

《JavaScript语言精粹》下载地址:
链接:https://pan.baidu.com/s/1jtfJ59aabGNBbPik4IYqtg 密码:synu

《JavaScript语言精粹》笔记(内附《JavaScript语言精粹》百度云下载链接)相关推荐

  1. 百度云安装mysql_安装mysql5.7和mysql8.0(可同时安装在windows中)附百度云下载链接

    先上安装包链接,拿走不谢 Oracle官网:https://dev.mysql.com/downloads/mysql/ mysql5.7安装包:https://pan.baidu.com/s/1Gm ...

  2. r语言代码html,R语言学习笔记-内附实例及代码

    R语言入门 R是开源的统计绘图软件,也是一种脚本语言,有大量的程序包可以利用. R中的向量.列表.数组.函数等都是对象,可以方便的查询和引用,并进行条件筛选. R具有精确控制的绘图功能,生成的图可以另 ...

  3. c语言万年历流程图加程序,基于C语言的万年历(内附程序).pdf

    基于C语言的万年历(内附程序) 课程设计 课程名称 C语言程序课程设计 题目名称 编写万年历系统 学生学院 专业班级 学 号 学生姓名 指导教师 2009 年 06 月 04 日 广东工业大学课程设计 ...

  4. C语言学习笔记-P1 初识C语言(2)

    C语言学习笔记-P1 初识C语言(2) C语言学习笔记-P1 初识C语言(2) 一.常量 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 3.枚举常量 二.字符串+转义字 ...

  5. C语言学习笔记-P1 初识C语言(1)

    C语言学习笔记-P1 初识C语言(1) P1 初识C语言(1) 一.什么是C语言 1.定义 2.发展 二.第一个C语言程序 Hello World 三.数据类型 四.变量,常量 未完待续!!! P1 ...

  6. 我要读的C语言书籍(电子版百度云下载)

    收藏的C语言电子书,和大家分享. 仅供学习交流,请勿用于商业用途. C程序设计(第四版 ).谭浩强     百度云下载 C程序设计(第四版 )学习辅导   百度云下载 C Primer  Plus(第 ...

  7. AI Challenger 全球AI挑战赛[二]——场景分类比赛介绍(附数据集和基线模型百度云下载)

    AI Challenger 全球AI挑战赛       场景分类 [ 2017 ] 传送门 目的:寻找一个更鲁棒的场景分类模型,解决图片的角度.尺度.和光照的多样性问题 一.比赛介绍 赛题简介 移动互 ...

  8. 如何在MySQL官网下载jar包附8.0jar包百度云地址

    如何在MySQL官网下载jar包附8.0jar包百度云地址 进入MySQL的官方网站 https://www.mysql.com/ 跟着如下图示来点击进行下一步 点击DOWNLOADS后点击下方蓝色菜 ...

  9. JavaScript高级学习笔记(附md文件下载链接)

    百度网盘提取码 链接:https://pan.baidu.com/s/1fY89tq2OTfSf1O-nHonlOg 提取码:vdqr JS回顾 重新介绍javaScript javaScript是什 ...

  10. html语言分行,Markdown内嵌Html语言

    帮我删掉,谢谢! 概述 Markdown是内嵌Html语言的,这使得我们可以在Markdown文档里面实现很多有趣的东西.现在记录在此,供自己以后参考,相信对其他人也有用. 介绍 Markdown的语 ...

最新文章

  1. prometheus--初见
  2. mysql数据库安全机制研究意义_MySQL数据库的安全机制
  3. gdb学习(二)[第二版]
  4. 【Elasticsearch】所有可用 Qbox 插件概述:第一部分
  5. C 语言的数据类型宽度扩展
  6. html 正方形代码,SVG rect
  7. UiAutomator2.0 和1.x 的区别
  8. Android 控件 之 Adapter 基础讲解
  9. PHP合并在线电影ts格式视频文件
  10. Excel数据查重小技巧
  11. 外文文献下载网站;数据获取网站;中文文献下载网站;论文原创性保真网站;外包项目申请网站;大数据比赛收录网站;提高编程能力;代码分享网站
  12. 抖音小店开店前要准备什么?入驻流程是什么?
  13. 原来我是水瓶座。。。
  14. 晶体管及其放大电路之共基极放大电路
  15. Java默认的排序算法
  16. 老杨说运维 | 企业数字化转型中,统一监控的必要性
  17. 关于学习Hadoop中未总结的资料
  18. Python二级考试知识点(史上最全)
  19. 电商项目中的SPU和SKU概念
  20. Android SO逆向-对象的构造函数与析构函数

热门文章

  1. OpenCV 教程入门篇
  2. php获取省市区区划代码,使用PHP解析行政区划代码
  3. 《Qt基础教程之Qt学习之路》
  4. 舒尔特表-计时开始-暂停-继续 js
  5. 项目管理-项目启动会
  6. 清华学计算机的住在哪个公寓,清华大学考研之住宿篇
  7. keil4注册机注册不了怎么办?我已经试过下面的注册机不行。求各大神指教一下?
  8. ad如何设置pcb板子形状_板子的造型_ad09在做PCB时如何设计板子的形状啊_彩妆阁...
  9. 《线性代数》(同济版)——教科书中的耻辱柱
  10. 程序员代码面试指南读书笔记1