先普及一下书中提到的一些术语
(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知名专家力作,深入剖析JavaScript
中文版javascript启示录,纯pdf。
《JavaScript启示录》这本书无疑是深入理解和掌握这门语言的重要资源。该书的PDF版本提供了一个全面的学习平台,使读者可以随时随地进行学习。 这本书可能会涵盖以下几个关键知识点: 1. **基础语法**:JavaScript...
### JavaScript DOM 编程艺术读书笔记关键知识点解析 #### 一、JavaScript简史与相关技术简介 - **XHTML(可扩展的超文本标记语言)**:这是一种更加严格、更加强大的HTML版本,旨在提高网页的可读性和可扩展性。 ...
JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的解释型编程语言,广泛用于网页和网络应用。在学习JavaScript时,了解其基本概念至关重要。以下是一些关键知识点的详细说明: 1. 变量: 在JavaScript中,...
《李炎恢JavaScript-pdf文档笔记》是一份详细记录了JavaScript编程语言基础知识至高级应用的教程,涵盖了从第一章到第三十四章的丰富内容。这个压缩包包含了一份PDF文档,旨在帮助学习者深入理解并掌握JavaScript的...
HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 HTML+CSS+JavaScript教程学习笔记HTML+CSS+JavaScript教程学习笔记 ...
【狂神说系列 JavaScript笔记】是一份全面且深入的JavaScript学习资源,旨在帮助开发者和初学者深入理解这门广泛应用于Web开发的脚本语言。这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个...
JavaScript是一门在Web开发中不可或缺的编程语言,它被用于创建交互式的网页内容和增强用户体验。虽然它广受欢迎,但同样伴随着许多争议和挑战。在《JavaScript 精粹》一书中,作者深入探讨了JavaScript的特性和最佳...
这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...
读书笔记:常见javascript知识点
以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...
JavaScript笔记-个人笔记-X-mind格式
读书笔记:算法导论与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所写的笔记和代码示例。学习JavaScript所写的笔记和代码示例。学习JavaScript所写的笔记和代码示例。学习JavaScript所写的笔记和代码示例。学习JavaScript所写的笔记和代码示例。学习JavaScript所写的...
读书笔记:javascript和typescript命名规范和原则