JavaScript 对象的属性和方法4种不同的类型

第一种类型就是前面所说的私有类型,它的特点是对外界完全不具备访问性,要访问它们,只有通过特定的getter和setter。
第二种类型是动态的公有类型,它的特点是外界可以访问,而且每个对象实例持有一个副本,它们之间不会相互影响。
第三种类型是静态的公有类型,或者通常叫做原型属性,它的特点是每个对象实例共享唯一副本,对它的改写会相互影响。
第四种类型是类属性,它的特点是作为类型的属性而不是对象实例的属性,在没有构造对象时也能够访问,下面通过例子说明这四种属性类型各自的特点和区别:
类型的四种属性


代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Example 21.3</title>
</head>
<body>
<h1 id="output"></h1>
<script language="javascript" type="text/javascript">
<!--
function dwn(s)
{
document.write(s + "<br/>");
}
function myClass()
{
var p = 100; //private property; 私有属性
this.x = 10; //dynamic public property 动态公有属性
}
myClass.prototype.y = 20; //static public property or prototype property 原型属性
myClass.z = 30; //static property //静态属性
var a = new myClass();
dwn(a.p); //undefined 私有属性对象无法访问到
dwn(a.x); //10 公有属性
dwn(a.y); //20 公有属性
a.x = 20;
a.y = 40;
dwn(a.x); //20
dwn(a.y); //40 //动态公有属性y覆盖了原型属性y
delete(a.x);
delete(a.y);
dwn(a.x); //undefined 动态公有属性x被删除后不存在
dwn(a.y); //20 动态公有属性y被删除后还原为原型属性y
dwn(a.z); //undefined 类属性无法通过对象访问
dwn(myClass.z); //30 类属性应该通过类访问
-->
</script>
</body>
</html>

(0)

相关推荐

  • 详解JavaScript对象类型

    JavaScrtip有六种数据类型,一种复杂的数据类型(引用类型),即Object对象类型,还有五种简单的数据类型(原始类型):Number.String.Boolean.Undefined和Null.其中,最核心的类型就是对象类型了.同时要注意,简单类型都是不可变的,而对象类型是可变的.  什么是对象  一个对象是一组简单数据类型(有时是引用数据类型)的无序列表,被存储为一系列的名-值对(name-value pairs).这个列表中的每一项被称为 属性(如果是函数则被称为 方法).  下面是

  • js判断对象是否是某一类型

    判断对象是否是某一类型 var obj = new String("我们"); alert(obj instanceof String); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • js确定对象类型方法

    1.typeof 支持基本类型的获取,比如:boolean.string.number.function.object.undefined 用法: var v = true;//"string", typeof v; //boolean PS:Array/Date/null等都是object,undefined为undefined 2.instanceof 当确定一个值是function或者object,就可以使用instanceof了解更详细情况 用法: var v = new Da

  • javascript中获取选中对象的类型

    在Javascript中 利用 document.selection 可以创建 textRange. 但其实不是什么时候都可以创建的. 我们可以利用 document.selection.type 来判断当前选中的是文本还是对象. document.selection.type 返回三个值 "None" "Text" "Control" 只有当返回值是 Text 时,创建的textRange才是有效的.

  • JS模拟面向对象全解(一、类型及传递)

    可是,没有类,何来面向对象一说?没有关系,可以模拟.而且这一套方法已经成为公认的JS实现面向对象的方法. 另外,JS内的东西完全开发,也就不存在成员的什么private.protected作用域. 下面切入正题. 一.类型 //从基础开始,省的后面看着吃力 1.类型的区别 基本数据类型和对象类型不是一回事. a.基本类型只是一个值,没有任何行为:而对象类型有自己的行为. b.基本类型是值类型,仅表示一个值:对象类型则拥有许多复杂的东西. c.基本类型传递时传值,对象类型传递时传址. 另外,文本非

  • isArray()函数(JavaScript中对象类型判断的几种方法)

    1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 typeof 的能力有限,其对于Date.RegExp类型返回的都是"object".如: typeof {}; //

  • JavaScript使用prototype定义对象类型

    From: JavaEye.com prototype提供了一套JavaScript面向对象基础设施,我们可以使用它来进行面向对象编程,定义对象类型方式如下:  var Person = Class.create(); Person.prototype = {  initialize : function(name, age) {  this.name = name;  this.age = age;  },  toString : function() {  document.writeln(

  • JavaScript中判断对象类型的几种方法总结

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 type

  • JS模拟面向对象全解(二、类型与赋值)

    类型赋值类似变量传递的问题. 基本数据类型不必说,传值的. 复制代码 代码如下: var a=5; var b=a; b=3; alert(a);//提示5 alert(b);//提示3 由此观之,发现改变b不会改变a,因为都是变量的值在来回传递,和变量本身没有关系. 对象类型,传址的. 复制代码 代码如下: var a=new Object(); a.x=5; var b=a; b.x=3; alert(a.x);//提示3 alert(b.x);//提示3 这样,由于传址,所以b即是a,a即

  • js中判断Object、Array、Function等引用类型对象是否相等

    在迭代中,我们还要注意的是,对象或者数组中的元素可能是一个任意值--除了原始类型值.object.arrray外,这个值还可能是一个方法.一个DOM对象或者window对象,可能你已经注意到了,有部分引用类型是不能进行迭代的,需要分支判断,代码如下: 复制代码 代码如下: function compare(a,b){ var pt = /undefined|number|string|boolean/, fn = /^(function\s*)(\w*\b)/, cr = "constructo

随机推荐