`

属性的遍历,删除,检测

 
阅读更多
先定义三种不同类型的属性(方法也可当作属性来看待)
	//声明类和类的构造函数
	function Person(name,age){ 
		this.name=name; //类的属性
		this.age=age;
		this.sayHello=function(){ //类的方法
			document.writeln("Hello I'm " + this.name);
		}
		this.setName=function(name){
			this.name=name;
		}
		this.setAge=function(age){
			this.age=age;
		}
	}
	var person = new Person('xiao', 21);
	
	//类的静态属性方法
	Person.Max_Age=120; //类的静态属性
	Person.cry=function(){ //类的静态方法
		document.writeln('www...'); //所有Person的哭声是一样的
	}
	
	//类的prototype属性方法
	function Chinese(){ 
		this.sayHello=function(){ //覆盖Person的sayHello()方法
			document.writeln('你好! 我是' + this.name);
		}
	}
	Chinese.prototype=new Person('xiaomin');
	var xiaomin = new Chinese();



1. 遍历属性
	for(var p in xiaomin){
		document.writeln(p+'='+xiaomin[p]);
	}
	//Object.keys()返回所有属性名
	document.writeln(Object.keys(person));  //=>name,age,sayHello,setName
    //Object.getOwnPropertyNames()返回所有自有属性名
	document.writeln(Object.getOwnPropertyNames(xiaomin));  //=>sayHello 



2. 删除属性
	document.writeln(person.age); //=> 21
	document.writeln(delete person.age);  //=> true
	document.writeln(person.age);  //=> undefined
	document.writeln(delete person.weight);  //=> true
	document.writeln(delete person.sayHello);  //=> true
	if(person.sayHello){
		person.sayHello();  // 不执行
	}else{  
		document.writeln('there is no sayHello in person.');  //执行,说明方法已被删除
	}
	document.writeln(delete Person.Max_Age);  //=> true
	document.writeln(Person.Max_Age); //=>undefined 静态属性可被删除
	document.writeln(delete Person.cry);  //=> true
	//Person.cry(); //抛出异常, 静态方法可被删除  

	document.writeln('=============');  //=> true
	document.writeln(Chinese.prototype.name);  //=> xiao 
	document.writeln(delete Chinese.prototype.name);  //=> true 
	document.writeln(Chinese.prototype.name);  //=> undefined, prototype中的属性被删除
	document.writeln(delete Chinese.prototype);  //=> false, prototype不能被删除
	document.writeln(delete xiaomin.sayHello); //=> true
	//xiaomin.sayHello(); //抛出异常, 继承的方法可被删除  



3. 检测属性
	//JS对象可看作属性的集合,我们经常会检测集合中成员的所属关系--判断某个属性是否存在于某个对象中。
	xiaomin.weight=100;
	//用in判断属性/方法是否在对象中
	document.writeln('weight' in xiaomin);   //=> true, xiaomin的自有属性/方法可被in检测
	document.writeln('setAge' in xiaomin);   //=> true, xiaomin的继承属性/方法可被in检测 
	//用hasOwnProperty判断属性/方法是否是对象自有的(非继承的)
	document.writeln(xiaomin.hasOwnProperty('weight')); //=> true, weight是xiaomin的自有属性/方法
	document.writeln(xiaomin.hasOwnProperty('setAge')); //=> false,  setAge不是xiaomin的自有属性/方法
	//propertyIsEnumerable是hasOwnProperty的增强版,只有检测到是自有属性且这个属性的可枚举(可遍历)性为true时才返回true
	document.writeln(xiaomin.propertyIsEnumerable('weight')); //=> true
	document.writeln(xiaomin.propertyIsEnumerable('setAge')); //=> false 非自有属性
	document.writeln(xiaomin.propertyIsEnumerable('toString')); //=> false 非可枚举属性
	//用"!=="判断一个属性是否undefined
	document.writeln(xiaomin.weight !== undefined); //=> true
	document.writeln(xiaomin.setAge !== undefined); //=> true
	//注意,上例中使用的是"!=="而不是"!=", "!=="可区分undefined和null.
分享到:
评论

相关推荐

    开源(VB代码):FAT32下文件的遍历隐藏恢复删除.zip

    本资源"开源(VB代码):FAT32下文件的遍历隐藏恢复删除.zip"提供了一套Visual Basic (VB)编程语言编写的源代码,用于在FAT32文件系统中进行文件遍历、隐藏文件检测以及文件恢复和删除操作。以下是对这些知识点的详细...

    电子-FATFSSD卡遍历根目录.rar

    5. 文件操作:遍历根目录后,可以执行读取、写入或删除文件等操作。这涉及到解析目录条目,找到对应文件的簇链,并通过SPI接口进行数据传输。 6. 错误处理:在执行上述操作时,必须对可能出现的错误进行处理,如...

    VB用FSO遍历文件夹操作示例程序

    通过FSO,你可以创建、删除、移动、复制文件和目录,以及读写文件内容。在VB中,虽然有更现代的替代方法如`System.IO`命名空间,但FSO仍然广泛用于兼容性要求较高的项目。 2. **遍历文件夹**:使用FSO的`Folder`...

    VBA常用技巧

    26. **禁止删除指定工作表**:修改工作表的属性。 27. **目录**:自动创建工作表列表。 28. **深度隐藏**:`Worksheets("Sheet1").Visible = xlSheetVeryHidden`。 29. **保护工作表名称**:防止用户更改工作表...

    FME查找重复属性

    该功能的主要目的是查找具有相同属性值的特征,并根据需求对这些重复特征进行操作,如过滤、合并或删除。在描述中提到,此功能目前仅适用于“面”类型的几何对象,而不适用于“点”和“线”类型。这意味着如果你的...

    JavaScript对象属性检查、增加、删除、访问操作实例

    该函数用于检测对象自身是否包含指定的属性。如果对象具有该属性,则返回`true`,否则返回`false`。例如: ```javascript var mouse = { "name": "betta", "age": 3, "varieties": "milaoshu" }; console.log...

    易语言属性列表框

    在易语言中,可以使用循环结构遍历属性数组,然后调用列表框的添加行或设置行数据的方法来完成初始化。 5. **刷新属性表**: 刷新属性表是指当程序状态变化或用户操作后,需要实时更新列表框中的内容。这通常涉及...

    易语言源码检测文件夹是否存在大全.7z

    5. **遍历目录**:除了直接检测一个文件夹是否存在,有时我们可能需要遍历整个目录结构。易语言提供了“系统.文件.遍历目录”命令,可以递归地遍历目录中的所有子目录和文件,从而实现更复杂的文件夹操作。 6. **...

    Android安卓安全加固反调试检测手段(java层+native层)(附代码实现).pdf

    - **压缩(Shrink)**:删除未使用的类、字段、方法和属性。 - **优化(Optimize)**:对字节码进行优化,移除无用指令。 - **混淆(Obfuscate)**:使用无意义的名称对类、字段和方法进行重命名。 - **预检...

    HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等

    通常我们使用`for`循环结合`length`属性来遍历所有数据: ```javascript for (var i = 0; i ; i++) { console.log('键:' + localStorage.key(i) + ', 值:' + localStorage.getItem(localStorage.key(i))); } ...

    js实现hashtable的赋值、取值、遍历操作实例详解

    在处理大量数据时,使用hashtable能够显著提高数据的查找效率,它允许我们以接近常数时间复杂度来插入、删除和查找键值对,这是因为大多数操作都可以直接通过键值索引访问,而不需要遍历整个数据集。 哈希表的实现...

    JS 对象属性相关(检查属性、枚举属性等)

    本文将深入探讨如何检查和处理对象的属性,包括删除属性、检测属性以及枚举属性。 1. 删除属性 删除对象属性通常使用`delete`运算符。例如: ```javascript let person = {age: 30}; delete person.age; // 即...

    判断JS对象是否拥有某种属性的两种方式

    在JavaScript编程中,经常需要判断一个对象是否包含某个特定的属性。...需要注意的是,在使用for-in循环遍历对象属性时,为了防止枚举到不应该出现的原型链属性,使用hasOwnProperty方法进行过滤是一种比较稳妥的做法。

    Sub删除word重复段落.doc

    同时,使用了 On Error Resume Next 语句来捕捉错误,并使用 err.Number 属性来检测错误。 知识点: 1. VBA 编程语言:VBA(Visual Basic for Applications)是一种编程语言,用于创建 Microsoft Office 应用程序...

    js对象1

    `for...in`循环用于遍历对象的所有可枚举属性,包括继承属性。通常,我们需要使用`hasOwnProperty()`来过滤掉继承的属性,或者根据属性类型(如函数)来跳过某些属性。 总结来说,JavaScript的对象模型提供了强大的...

    重名文件批量搜索|删除|检测|

    标题中的“重名文件批量搜索|删除|检测|”指的是一个功能强大的工具,它能够帮助用户在计算机上快速查找并处理具有相同名称的文件。这个工具可能是为了优化存储空间、整理文件系统或者解决文件冲突而设计的。在日常...

    修改时间检测的软件源码

    开发者可能使用它来创建、删除、复制、移动文件和目录,以及读取文件属性,例如修改时间。 对于初学者,理解和学习"修改时间检测"的源码能帮助他们掌握VBAPI的使用,提高编程能力。通过分析源码,可以了解到如何在...

    Delphi检测TreeView树的重复子节点..rar

    总结,检测和处理Delphi中TreeView的重复子节点涉及到对TreeView控件的操作和遍历算法的理解。通过编写适当的代码,我们可以有效地确保数据的唯一性,提高用户体验。在实际应用中,还需要根据项目需求进行相应的优化...

    基于QT开发的重复文件检测工具的源码

    7. **结果展示与操作**:检测到的重复文件通常会在一个列表或表格中显示,用户可以选择查看详细信息、预览文件内容、标记为删除或直接删除。这需要实现对应的模型-视图-控制器(MVC)结构,以及相应的文件操作函数。...

    易语言源码检测文件夹是否存在.rar

    了解如何检测文件夹是否存在只是易语言文件操作的基础,进一步学习可以涉及文件操作(如读写文件)、目录遍历、文件属性获取等。此外,易语言还提供了丰富的图形界面组件,可以用于构建交互式的应用程序。 7. 学习...

Global site tag (gtag.js) - Google Analytics