文档章节

理顺 JavaScript (14) - constructor 与 instanceof

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 425
阅读 2
收藏 0

重看前面的例子: 明明是个函数, 怎么就成了对象?
function MyObj(a, b) {
  this.x = a;
  this.y = b;
}

var obj = new MyObj(11, 22);
alert(obj.x);      //11
alert(obj.y);      //22

alert(typeof obj); //object

//一个对象的建立要通过构造函数, 有了构造函数就不难成为对象; 
//用 new 关键字调用函数, JavaScript 就会建立一个对象, 并把该函数当作对象的构造函数.
//这就像 String 类的构造函数是 String()、Array 类的建立函数是 Array() ...

 
 
 
 
 

 

 

  

每个类的构造函数的名称肯定不一样, 但可以用 constructor 泛指它们
var str = new String();
alert(str.constructor); /* 将会输出如下:
function String() {
 [native code] 
} 
不过它没给我们看到具体的实现代码, 只有自定义的才会看到 */

var arr = new Array();
alert(arr.constructor); /* 将会输出如下:
function Array() {
 [native code] 
} 
*/

function MyObj(a, b) {
  this.x = a;
  this.y = b;
}

var obj = new MyObj(11, 22);
alert(obj.constructor); /* 将会输出如下:
function MyObj(a, b) {
  this.x = a;
  this.y = b;
}
*/

 
 
 
 
 

 

 

  

判断一个对象所属的类(方法一)
//通过上面手段, 可以判断一个对象到底是属于哪一个类
var str, arr, s;
str = new String();
alert(str.constructor == String); //true

arr = new Array();
alert(arr.constructor == Array); //true

/* 但这会有个问题, 譬如一个不是对象的字符串也会返回 true */
s = 'ABC';
alert(s.constructor == String); //true

//解决这个问题当然可以再加条件, 但不如直接用下一个方法

 
 
 
 
 

 

 

  

判断一个对象所属的类(方法二: 使用 instanceof 关键字)
var str, arr, str;
str = new String();
alert(str instanceof String); //true

arr = new Array();
alert(arr instanceof Array);  //true

str = 'ABC';
alert(str instanceof String); //false

/* 但这也会有个问题, 因为 Object 是所有类的祖先 ... */
str = new String();
alert(str instanceof Object); //true

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/03/03/1402561.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
JavaScript使用原型判断对象类型

constructor属性 在JavaScript创建对象(二)——构造函数模式中,我们说过可以使用对象的属性判断对象的类型:,可能当时就有细心的读者会想,我们并没有给这个对象添加过,这个属性是从哪儿...

Bob2100
10/19
0
0
javascript instanceof

javascript中的instanceof http://stackoverflow.com/questions/2449254/what-is-the-instanceof-operator-in-javascript 万能的instanceof公式: function instance_of(V, F) {var O = F.pr......

cyper
2014/05/08
0
1
JavaScript的检测及其数据类型

一、JavaScript有几种类型的值? Javascript有两种数据类型,分别是基本数据类型和引用数据类型。其中基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增,表示独一...

前端攻城小牛
10/19
0
0
由Javascript的继承引发的:抽象类、接口、多态,甚至是类型转换!

工作中需要用到Javascript,关注了Javascript中继承复用的问题,翻阅了网上的各种关于Javascript继承的帖子,感觉大都思考略浅,并没有做过多说明,简单粗暴的告诉你实现Javascript继承有1.2...

xue777hua
2013/07/28
0
11
Node.js Interview ---- 类型判断

Node.js Interview ---- 类型判断 基本数据类型: Number,String,Boolean,Undefined,Null,Symbol 复杂数据类型: OBject console.log("aa" == true) // false const a = {i: 1,toString: funct......

Even
10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vavr User Guide中英对照版

Vavr User Guide(Vavr用户指南) Daniel Dietrich, Robert Winkler - Version 0.9.2,2018-10-01 0. Vavr Vavr是Java 8 的对象函数式扩展,目标是减少代码行数,提高代码质量,提供了持久化集合...

白石
8分钟前
0
0
Spark2.40 Streaming编程指南

Spark Streaming编程指南 概观 一个快速的例子 基本概念 链接 初始化StreamingContext 离散流(DStreams) 输入DStreams和Receivers DStreams的转换 DStreams的输出操作 DataFrame和SQL操作 ...

天天爬网
9分钟前
0
0
oozie 调度pyspark

http://www.learn4master.com/big-data/pyspark/run-pyspark-on-oozie

MPRO
12分钟前
0
0
转:文件系统read,write缓存,有点意思

当我们在linux系统下写程序的时候,经常会读文件或者写文件,既然要操作文件,就会用文件操作函数,其中涉及读写的不乏有read/write或者fread/fwrite,但是我们应该选择哪一种呢,少安毋躁,...

臧教授
17分钟前
0
0
通过示例学习Javascript闭包

译者按: 在上一篇博客,我们通过实现一个计数器,了解了如何使用闭包(Closure),这篇博客将提供一些代码示例,帮助大家理解闭包。 原文: JavaScript Closures for Dummies 译者: Fundebug 为...

Fundebug
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部