javascript中的属性注意事项

1.函数原型prototype设置的对象是只读类型,所以不能修改(即栈只读)。但是我们常常可以看到它被“修改‘’了。若对象中定义的属性和原型中属性一样,优先使用自定义属性。

例如代码:

//原型 类似于父类
        function students() {
            this.major= ‘数学‘;
            this.studentsName = [‘张三‘,‘李四‘,‘王五‘];
        }
        var myStudents = new students(); //必须建立实例对象 才能被其他对象‘继承‘;
        //建立对象
        function teacher(sub) {

        }
        teacher.prototype = myStudents;//设置原型

        var mathTeacher = new teacher(); //创建对象
        mathTeacher.studentsName[0] = ‘赵六‘;

        var englishTeacher = new teacher(); //创建对象
        englishTeacher.major = ‘English‘;

        alert(‘studentsName=‘ + mathTeacher.studentsName + "  " + ‘major=‘ + mathTeacher.major);//输出结果
        alert(‘studentsName=‘ + englishTeacher.studentsName + "  " + ‘major=‘ + englishTeacher.major);//输出结果

输出结果为:

但是它们修改的方式是不一样的。

 mathTeacher.studentsName[0] = ‘赵六‘;

studentsName指向的数组不能变,但是数组成员可以变。例如studentsName指向三年二班,你就不能让它重新指向四年一班。但是三年二班的学生改变了,studentsName还是指向三年二班没有改变。(这涉及栈堆问题)

englishTeacher.major = ‘English‘;

这并没有改变原型中的major,只是对象新建了一个和原型中的major同名的属性,根据原则优先使用自定义属性。

原文地址:https://www.cnblogs.com/ylancf/p/10727165.html

时间: 2024-08-28 17:49:25

javascript中的属性注意事项的相关文章

深入理解JavaScript中的属性和特性

深入理解JavaScript中的属性和特性? JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象属性如何进行分类 属性中特性的理解 第一部分:理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象的本质:ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数.即

Javascript中length属性的总结

Javascript中length属性的总结 一.StringObject中的length     length属性是返回字符串的字符数目. 例如: // 普通字符串 var str = "abcdef"; console.log(str.length); // 6 // 数组 var str1 = new Array(1,2,3,4); console.log(str1.length); // 4 // 数组与字符串 var str2 = str1 + str; // "a

JavaScript中对象属性的添加和删除

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 用.为对象添加属性 用关键字delete删除属性 用[]添加属性 和.的不同 r.name==r["name"]; r.

[转] JavaScript中的属性:如何遍历属性

在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单.这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从一个或多个的上层原型上继承一些属性.第二个原因是,JavaScript中的属性不光有值,它还有一些除了值以外的其他特性,其中一个影响属性遍历的特性就是[[Enumerable]],如果该值为true,则称这个属性是可枚举的,否则反之. 知道了这些,我们就可以把属性的遍历分为四种情况. 注:示例代码中

JavaScript中的属性操作

JavaScript中的属性操作 一. 原型链 在js中,任何一个对象都有一个prototype属性,在js中记做:_proto_. 比如,我们创建一个对象: <!-- lang: js --> var foo = { x:1, y:2 } 虽然看起来我们只为foo对象创建了两个属性,实际上,它还有一个属性_proto_,如图: 即使我们不定义_proto_,在js中也会预留一个属性. 如果我们定义一个空对象,foo <!-- lang: js --> foo = function

jQuery和javascript中event属性

javascript中event属性说明 1.altKey 描述: 检查alt键的状态. 语法: event.altKey 可能的值: 当alt键按下时,值为 TRUE ,否则为 FALSE .只读. 2.button 描述: 检查按下的鼠标键. 语法: event.button 可能的值: 0 没按键 1 按左键 2 按右键 3 按左右键 4 按中间键 5 按左键和中间键 6 按右键和中间键 7 按所有的键 这个属性仅用于onmousedown, onmouseup, 和 onmousemov

javascript中的属性类型

ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特性.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javascript中不能直接访问它们.为了表示特性是内部值,该规范把它们放在了两对方括号中,例如[[Enumerable]]. ECMAScript中有两种属性:数据属性和访问器属性. 1.数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有4个描述其行为的特性. [[Configurable

Javascript中prototype属性的详解

原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的’,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对

javaScript中私有属性和方法

javaScript并没有特殊的语法来表示私有.保护.或公共属性和方法,在这一点上与 java或其他语言是不同的,JavaScript中所有对象的成员是公用的: var myobj={ mypop:1, getProp:function(){ return this.myprop; } }; console.log(myobj.myprop); // 'myprop'是公有可访问的 console.log(myobj.getProp()); //getProp()也是公有的,可访问的 当使用构造