首页 技术 正文
技术 2022年11月14日
0 收藏 697 点赞 4,832 浏览 2989 个字

/**
*
* @authors Your Name (you@example.org)
* @date 2016-11-18 09:31:23
* @version $Id$
*/
instanceof:

  1、左操作数是一个对象,右操作数是标识对象的类,如果左侧的对象是右侧类的实例,则表达式返回true,否则返回false

  2、如果左边的操作数不是对象,返回false

  3、如果右边的操作数不是函数,抛出类型错误异常

  4、在计算obj instanceof f 时, 会先计算f.prototype, 然后在原型链中查找obj,如果找到则obj是f或者是f父类的实例,则返回true
//注意原始值与对象的区别

//instanceof
var data = [1, 2, 3, 4, 5];
data instanceof Array; //true
data instanceof Object; //true

data instanceof Number; //false
1 instanceof Number; //false
1 instanceof Object; //false
var num = 1;
num instanceof Number; //false
num instanceof Object; //false
var num = Number(1);
num instanceof Number; //false
num instanceof Object; //false

Number(1) instanceof Number; //false
Number(1) instanceof Object; //false
var num1 = new Number(1);
num1 instanceof Number; //true
num1 instanceof object; //true
null instanceof Object; //false;
undefined instanceof Object; //false;

var data = [1, 2, 3, 4, 5];
var bb = {};
var cc = function(){};
data instanceof bb; //TypeError: Expecting a function in instanceof check, but got #<Object>
data instanceof cc; //false

typeof
typeof a : typeof 后的操作数可以是任意类型,返回值为操作数类型的字符串
//typeof

typeof undefined; // “undefined”
typeof null; // “object”

typeof ture; // “boolean”
typeof false; // “boolean”

typeof NaN; // “number”
typeof Infinity // “number”
typeof 1 //”number”
typeof “abc”; //”string”

typeof function(){}; // “function”
typeof RegExp; //”function”
typeof Math; //”object”

Object.prototype.toString
默认的toString方法:Object.prototype.toString()返回[object class], 我们可以通过它获取对象的类型信息

var data = [1, 2, 3, 4, 5];
Object.prototype.toString.call(data); //”[object Array]”

我们可以定义如下的函数返回对象的类型信息

function classof(obj){
if(obj === null){
return “Null”;
}
if(obj === undefined){
return “Undefined”;
}
return Object.prototype.toString.call(obj).slice(8, -1);
}

测试:

classof(null); // “Null”
classof(undefined) // “Undefined”
classof(“abc”); // “String”
classof([]); // “Array”
classof({}); //”Object”
classof(//); // SyntaxError: Unexpected token }
classof(/,/); //”RegExp”
classof(new Date()); //”Date”

classof(window); // “global”
classof(function(){}); // “Function”
function f(){}; classof(new f()); //”Object”

需要注意的:
1、javascript中除了原始值(数字、字符串、布尔值、null、undefined)之外的都是对象

2、javascript不区分整数值和浮点数值

3、任何Javascript值都可以转换为布尔值,下面的都会被转换为false

undefined

null

0 / -0

NaN

“”

因而如需检测对象是不是null应该采用如下方式而不是直接if(obj):

if(obj !== null)

4、null是关键字可以理解为一个特殊的对象值,但是对 typeof null 返回”object”

5、undefined用于表示未定义,不是关键字,typeof undefined 返回 “undefined”

  查询时如果不存在返回undefined,函数没有返回值返回undefined;

  undefined是预定义的全局变量;在ECMAScript3中是可读写变量,ECMAScript5中是只读变量

null == undefined; //true

null === undefined; //false;

另外null和undefined不包含任何属性和方法,因而使用用null和undefined做. 或者 [] 操作会报类型错误

6、null和undefined在任何期望是一个对象的地方都会造成类型错误异常,区别于字符串、数字、布尔值,详细见下一条

7、字符串,数字和布尔值虽然不是对象,但是在读取它们的属性或者方法时,表现的和对象一样,使用它们的方法和属性时会通过其对应的构造函数创建一个临时对象,例如:

var string = “wish you happy”;
var words = string.split(” “);

我们在引用string的属性时javascript会调用new String(string);
但是,如果我们给他们的属性赋值则会忽略相关操作,例如:

var string = “wish you happy”;
string.length = 17;
string.len = 14;
console.log(string.length); //14
console.log(string.len); //undefined

8、需要注意的类型转换:

//转化为字符串

undefined: “undefined”

null: “null”

true: “true”

false: “false”

0: “0”

-0: “0”

NaN: “NaN”

Infinity: “Infinity”

-Infinity: “-Infinity”

[]: “”

[1, 2, 3]: “1,2,3”

//转化为数字

undefined: NaN

null: 0

“”: 0

“1.2”: 1.2

“wish”: NaN

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,115
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,587
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,433
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,204
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,840
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,925