JavaScript如何获取对象实例的名字

  大家都知道JavaScript是一种面向对象的语言,对象可以通过new关键字,实例化出来,但是,如果我想获取实例化对象的名字,怎么破?比如:

1 function Dog() {
2     this.myName = function() {
3     }
4 };
5
6 var dog = new Dog();

  如何获取这个dog的名字"dog"呢?大家想过没,可以先想想!

  其实大家想过没有,定义的全局变量为什么能够直接访问使用呢?实际上全局变量是绑定在window对象上的,都是window对象的属性,如下:

1 var age = 20;
2 console.log(window.age);  // 输出 20

  好了,我们返回上面的例子,那么dog其实也是绑定在window对象上的,如下:

1 function Dog() {
2     this.myName = function() {
3     }
4 };
5 var dog = new Dog()
6 console.log(window.dog); // 输出 Dog {}

  那么接下来,就可以利用这个特点,来搞点什么,如下:

 1 function Dog() {
 2     this.myName = function() {
 3
 4         // 这里循环查找window对象中的dog属性
 5         for (var name in this.global) {
 6
 7             // 判断是否为Dog类
 8             if (this.global[name] === this) {
 9                 return name;
10             }
11         }
12     }
13 }
14
15 // 这里,将window对象的引用,存到Dog原型的global中
16 Dog.prototype.global = this;
17
18 var dog = new Dog();
19
20 console.log(dog.myName());  // 输出"dog"            

  就这样,就获取了实例化对象的名字了,nice!

  总结:

  1. 该方法的主要原理是通过全局变量的存储机制,是绑定在window对象上的;
  2. 什么时候需要去获取实例化对象的名字呢?一般的场景都不需要吧,这个主要是dog是个对象,但是我时候要把它当做字符串来用,比如打印日志,构造了"dog"对象,这个时候,其实就派上用场了。
  3. dog是自己实例化的,肯定是随机的,这时,只能通过一个中间媒介来存储,并实现转化。
时间: 2024-08-03 10:48:44

JavaScript如何获取对象实例的名字的相关文章

Javascript中获取对象的原型对象

在Javascript中,如果我们有一个对象但是又不知道它的构造函数时,如何获取它的原型对象呢? 在Chrome中或是FireFox浏览器中,我们可以直接使用对象的__proto__属性获取它的原型对象. <!-- lang: js --> function F(){}; var foo = new F(); alert(foo.__proto__ == F.prototype); 但是,__proto__属性在IE浏览器中一直到IE11才被支持. 那么在不支持__proto__属性的浏览器中

javascript 中获取对象的长度(map对象的长度)--js关联数组的长度

var n = {1:100, 2:101, 3:102, 4:103}; 怎么获取这个对象n的长度呢? 方法一: function getLength(obj){ var count = 0; for(var i in n){    count++; } return count; } //改进  加上一个hasOwnProperty判断过滤下原型中的属性就比较安全了 function getLength(obj){ var count = 0; for(var i in n){ if(n.h

JavaScript String 对象实例深入研究

本文主要介绍并分析JavaScript中String对象的具体用法,以及和String对象相关的方法,方便开发者在JavaScript开发中更好地处理字符串. 1. 介绍 String 对象,对字符串进行操作,如:截取一段子串.查找字符串/字符.转换大小写等等. 2. 定义方式 2.1 new String(Value) 构造函数:返回一个内容为Value的String对象参数: ①value {String} :字符串 返回值: {String对象} 返回一个内容为Value的String对象

【Python】[面性对象编程] 获取对象信息,实例属性和类属性

获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数的例子: def readImage(fp): if hasattr(fp,"read"): return readData(fp) return None 实例属性和类属性1.一句话,Python是动态语言,根据类创建的实例可以任意绑定属性.    注意:实例属性和雷属性的名字要保持不一

原生javascript实现获取指定元素下所有后代元素代码实例

原生javascript实现获取指定元素下所有后代元素代码实例:在本版块介绍过实现此功能的代码代码,但是在代码量上比较麻烦,采用的是循环递归的方式.上面你所说的方式可以参阅原生的javascript获取指定元素下所有的元素节点一章节,此文介绍的看起来非常的麻烦,那么下面就分享一个比较简单的方式,使用原生的javascript方法即可实现此功能.代码实例如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset=&

javascript获取对象直接量中的属性和属性值

javascript获取对象直接量中的属性和属性值:所谓的对象直接量简单来说就是,由大括号包裹的键值对列表,例如: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } 下面介绍一下如何获取对象直接量中的属性和属性值,代码如下: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } for(var prop in a

javascript如何获取链接参数代码实例

javascript如何获取链接参数代码实例:使用url传递参数,大家应该不陌生,例如: http://www.softwhy.com/home.php?mod=space&do=home&view=all 既然传递参数,那么自然就要获得传递的参数,当然获取参数的方式有多种多样,下面就介绍其中的一种,和大家一起分享,希望能够给大家带来一定的帮助,代码如下: var url="http://www.softwhy.com/home.php?mod=space&do=home

获取对象的类型信息 (JavaScript)

function classof(o) { if (null == o) return 'Null'; if (undefined == o) return 'Undefined'; return Object.prototype.toString.call(o).slice(8, -1); } classof([]); classof({}); classof(Date); classof(new Date()); classof(/./); classof(1); classof(1.9);

转: JavaScript 获取对象属性和方法

一.获取对象属性和方法 Object.keys()for in 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举)直接找到给定对象. 1 // 创建一个对象的构造方法 2 function myObj(name, attr) { 3 this.name = name; 4 this.attr = attr; 5 6 this.sayHi = function () { 7 return 'hi everyon