先普及一下书中提到的一些术语
(1)原始值:1,“2”,false,true,null,undefined
(2)复杂值又称为复杂对象或引用对象:new String/Number/Array/Object/Boolean()等
//原始值
var str2 = String('12');
var str = '22';
//复杂值
var obj = {};
var str = new String();
1.构造函数实例拥有指向构造函数的constructor
var foo = function(){};
var obj = {};
var str = new String();
var arr = [1,2];
foo.constructor;//function()
obj.constructor;//Object()
str.constructor;//String()
arr.constructor;//Array()
原始值和构造函数也是有关系的,所以constructor也指向构造函数。
2.也可以查看自定义构造函数的实例对象。用constructor查看实例对象的构造函数,构造函数在定义的时候必须给出函数名称。
//有函数名称
var myFunction = function myFunction(){
};
//匿名函数
var noNameFunction = function(){};
my_fn = new myFunction();
my_fn.constructor;//myFunction()
my_no_name_fn = new noNameFunction();
my_no_name_fn.constructor;//function
作用:查看别人编写大量代码时,尤其是不知道new实例对象的构造函数时,可以用constructor查看生成此实例的构造函数。但是如果知道构造函数,可以使用instanceof验证。
3.instanceof需要特别注意的地方:只有复杂值和new生成的实例对象instanceof返回true
var noNameFunction = function(){};
my_no_name_fn1 = new noNameFunction();
my_no_name_fn2 = noNameFunction();
my_no_name_fn1 instanceof noNameFunction;//true
my_no_name_fn2 instanceof noNameFunction;//false
var name ="sam";
name instanceof String;//false
var name = new String("sam");
name instanceof String;//true
var obj = {
name:"obj"};
obj instanceof Object;//true
4.构造函数创建的实例可以拥有自己的独立属性
var name='sam';
name.foo = 'foo';
name.foo; //undefined,字面量和原始值是不支持此功能的
var name = new String('sam');
name.foo = 'foo';
name.foo;//'foo'
var myFunction = function(){};
my_fn1 = new myFunction();
my_fn2 = myFunction;
my_fn1.foo = "foo";
my_fn1.foo;//'foo'
my_fn2.foo = "foo";
my_fn2.foo;//'foo'
my_fn3 = new myFunction();
my_fn3.foo;//undefined
5.javascript对象都是动态的,也就是说javascript对象是可以改变的。
Number.prototype.calculate = function(a,b){
return a+b;
};
num = new Number();
num.calculate(1,2);
6.typeOf操作符:原始值中undefined返回的就是undefined,null返回的就是object,其余的按照自己的类型来;复杂值返回的是object,function除外,返回的是Function。
7.在进行对象比较的时候要谨记:原始值比较采用值比较,复杂值比较采用引用比较。
var str_compare = 'sam';
var str_to = 'sam';
str_compare === str_to;//true
var obj_1 = {name:'sam'};
var obj_2 = {name:'sam'};
obj_1 === obj_2;//false
obj_3 = obj_1;
obj_1 === obj_3;//true
8.复杂对象具有动态属性
所谓的复杂对象具有动态属性,是指对复杂对象的复制是引用拷贝,改变任何一个拷贝的属性值,其他都会跟着改变。
var obj_1 = {name:'sam'};
var obj_2 = obj_1;
obj_1.name = 'tom';
obj_1.name;//tom
obj_2.name;//tom
var arr =[1,2];
arr_copy = arr;
arr_copy[0] = 3;
arr;//[3,2]
9.删除对象属性
var obj_1 = {name:'sam',class:1};
delete obj_1.name;
obj_1.name;//undefined
10.head对象与全局属性、全局变量
所谓全局变量就是直接包含在head对象内部的值。
var name = 'sam';
var fn = function(){
console.log(window.name);
}();
11.引用head对象的两种方式:直接赋值,使用this
var name = 'sam';
var window_var1 = this;
var window_var2 = window;
var fn = function(){
console.log(window_var1.name);//'sam'
console.log(window_var2.name);//'sam'
}();
//但是head对象是隐式的,显示调用降低性能。
var name = 'sam';
var window_var1 = this;
var fn = function(){
console.log(name);//'sam'
}();
12.javascript中等同于false的值:0,-0,null,“”,undefined,NaN,false
分享到:
相关推荐
根据提供的文件信息,“JavaScript启示录PDF完整版”这一标题与描述明确指出了这是一本关于JavaScript编程语言的专业书籍。然而,由于具体内容并未给出详细章节或摘要信息,我们将基于标题、描述以及JavaScript领域...
JavaScript知名专家力作,深入剖析JavaScript
中文版javascript启示录,纯pdf。
根据提供的文件信息,我们可以归纳出以下几个JavaScript相关的知识点: ### JavaScript基础用法 #### 内联JavaScript 内联JavaScript指的是在HTML元素中直接嵌入JavaScript代码的方式。这种方式常见于`<a>`、`...
JavaScript,简称JS,是由Brendan Eich在1995年创造的一种高级编程语言,最初目的是为了增强网页的交互性,特别是在前端进行表单验证。JavaScript不是Java的子集,两者之间没有直接关联。JS起初名为LiveScript,但在...
《李炎恢JavaScript-pdf文档笔记》是一份详细记录了JavaScript编程语言基础知识至高级应用的教程,涵盖了从第一章到第三十四章的丰富内容。这个压缩包包含了一份PDF文档,旨在帮助学习者深入理解并掌握JavaScript的...
HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 ...
JavaScript是一门在Web开发中不可或缺的编程语言,它被用于创建交互式的网页内容和增强用户体验。虽然它广受欢迎,但同样伴随着许多争议和挑战。在《JavaScript 精粹》一书中,作者深入探讨了JavaScript的特性和最佳...
这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...
读书笔记:常见javascript知识点
JavaScript高级资料JavaScript代码 素材 笔记 作业资料,学习资料 01-创建类和对象.html 02-类中添加方法(1).html 03-类的继承(1).html 04-super关键字调用父类普通函数(1).html 05-子类继承父类方法同时扩展自己...
前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar ...
项目:使用 Javascript 编写的超人启示录游戏(附源代码) 关于项目 超人启示录游戏是使用 HTML、CSS 和 JavaScript 开发的。谈到游戏玩法,这是一款简单的游戏,玩家必须拯救世界免受流星雨的侵袭。玩家必须使用...
读书笔记:《算法图解》 By JavaScript
读书笔记:javascript和typescript命名规范和原则
这个菜鸟的笔记里面没有谈到JavaScript中的对象,比如说时间对象和字符串对象,这些内容可以在“菜鸟的JavaScript对象笔记”中找到。不过因为小菜鸟个人认为HTML DOM比其它的JavaScript对象更常用一些(不过这可不...
这份“前端开发必备JavaScript(含源码课件笔记总结)”的资源集合是前端开发者不可多得的学习材料,包含了丰富的知识内容,旨在帮助你深入理解和掌握JavaScript。 一、JavaScript基础 在JavaScript的学习中,首先...
这个资源是一个基于Spring Boot和MySQL的Java毕业设计项目,名为“学生读书笔记共享”。该项目旨在为学生提供一个在线平台,让他们可以分享和交流自己的读书笔记。通过这个项目,学生可以发布自己的读书笔记,查看和...
读书笔记:Javascript基础总结Dom事件原生函数正则