javaScript中对于对象之间的深层次继承.
//扩充 通过原型链prototype实现多層次對象继承
var ClassA = function(){
ClassA.prototype.name = 'jack';
ClassA.prototype.set_name = function(name){
this.name = name;
};
ClassA.prototype.get_name = function(){
return this.name;
};
}
var ClassB = function(){
ClassB.prototype = new ClassA();
ClassB.prototype.age = 25;
}
var ClassC = function(){
ClassC.prototype = new ClassB();
ClassC.prototype.color = 'red';
ClassC.prototype.get_message = function(){
return 'name :'+this.get_name()+"\n"+"age :"+this.age+"\n"+"color :"+this.color;
}
}
//ClassB()和ClassC()必須要運行 不可缺少 如果沒有執行這兩步操作則會報錯
//錯誤信息為 c.set_name is not a function TypeError
//對於這點我個人認為 ClassB和ClassC 是函數,需要編譯后才可以對它進行調用
//哪位兄台假如知道這裡的緣由,請留言或評論,謝謝
ClassB(); //必不可少
ClassC();//必不可少
var c = new ClassC();
c.set_name('michael');
console.log(c.get_message());
//結果為:
//name :michael
//age :25
//color :red
//通過for/in 對函數對象的屬性方法進行分離,并分別打印出來
function Traversal(obj){
var array1=[],array2=[],array3=[];
var array4=[];
for (var name in obj){
//對函數對象的屬性進行分析
if(typeof obj[name]== 'function'){
array3.unshift(name);
}else if(typeof obj[name] == 'function'){
array2.unshift(name);
}else if(typeof obj[name] !== 'function' || typeof obj[name] !=='object'){
array1.unshift(name);
}//保存所有的信息
array4.unshift(name);
};//返回一個多維數組
return new Array(array1,array2,array3,array4);
}
function test(){
var array = Traversal(new ClassC());
var myArray = new Array();
for(var i=0;i<array.length;i++){
myArray = array[i];
// console.log("this is array["+i+"] \n" +myArray +'\n 數組的長度為:' +myArray.length );
if(myArray.length>0){
console.log('----------------------------'+'\n'+"this is array["+i+"] \n" );
for(var j=0;j<myArray.length;j++){
console.log(myArray[j]+"\n");
}
}
}
}
test();
分享到:
相关推荐
原型(Prototype)是JavaScript实现继承的基础,每一个对象都有一个原型对象,当访问一个对象的属性时,如果该对象本身不存在该属性,则会沿着原型链向上查找直到找到该属性,或者到达原型链的末端。每一个函数都有...
- `Object.prototype` 是所有对象的顶级原型,其他所有对象都可从中继承。 5. 原型链(Prototype Chain): - 当尝试访问对象的一个属性时,JavaScript会沿着原型链向上查找,直到找到该属性或到达原型链的顶部。...
instanceof是JavaScript中的一个操作符,用于检测构造函数的prototype属性是否出现在一个对象的原型链上。...同时,这一知识点对于深入理解JavaScript中的原型继承机制以及对象之间的关系也至关重要。
JavaScript原型是JavaScript编程中一个非常重要的概念,它涉及到对象、继承和函数的深层次理解。在JavaScript中,每个对象都有一个内部属性[[Prototype]],通常通过`__proto__`(非标准,但广泛支持)或者`Object....
`Object.extend`和`Object.prototype.extend`是辅助实现继承的工具,前者用于对象间的属性复制,后者允许对象自身调用`extend`方法。这种机制使得JavaScript具有高度的灵活性,但也可能带来一些复杂性,如原型链的...
在JavaScript中,实现继承是面向对象编程的一个核心概念。传统的继承方法是通过原型链(prototype chain)实现...这种继承方法的思路对于希望深入理解JavaScript对象系统和原型继承的开发者来说,是值得参考和学习的。
总的来说,JavaScript的类继承涉及到原型链、`Object.create`、构造函数的`prototype`对象以及调用父类方法的技术。理解这些概念对于编写可维护、可扩展的JavaScript代码至关重要。在实际开发中,还需要考虑性能优化...
- **继承与原型链**:利用原型链实现继承。 ```javascript function Student(name, age, grade) { Person.call(this, name, age); // 调用父类构造函数 this.grade = grade; } Student.prototype = Object....
- 最准确的判断方法是`Object.prototype.toString.call()`,它能返回对象的内部表示。 3. **浅拷贝与深拷贝**: - 浅拷贝仅复制对象的引用,对原对象的修改会影响到拷贝后的对象。 - 实现浅拷贝的方法有`Object....
在JavaScript中,由于其原型链机制,我们可以利用`Object.create()`方法或者`JSON.parse(JSON.stringify())`来创建对象的副本,前者适用于非引用类型的属性,后者适用于整个对象的深拷贝,但会丢失函数属性。...
在JavaScript中,原型链(prototype chain)使得对象可以继承其他对象的属性和方法。要检查对象的原型,可以使用`__proto__`属性,或者`Object.getPrototypeOf(obj)`方法。例如,`console.log(obj.__proto__)`会显示...
原型链使得对象可以继承其他对象的属性和方法,是实现面向对象编程的关键。 6. **闭包** 闭包是JavaScript中的一个高级特性,允许函数访问并操作外部作用域的变量,即使在其外部作用域已经销毁的情况下。 7. **...
10. **源码分析**:书中提供的源代码可以帮助读者理解各种复杂编程概念的实际应用,通过阅读和调试源码,开发者可以提升对JavaScript深层次的理解。 总的来说,《JavaScript权威指南(第6版)》是一本全面而深入的...
通过上述知识点介绍,我们可以看到JavaScript进阶内容是相对复杂且深奥的,要求我们对JavaScript的基本概念和运行机制有更深层次的理解。通过实践和深入学习这些进阶知识点,我们可以更好地掌握JavaScript编程,编写...
JavaScript的原型链允许对象继承原型对象的属性,这形成了一个原型链结构,直到`Object.prototype`。 文件内容还提到了JavaScript中的保留字,如`with`、`class`和`void`。保留字是语言中预留下来的关键字,不能...
11. 原型链(Prototype Chain):原型链是通过原型对象形成的链状结构,用于实现继承。 12. 基于类的继承与基于原型的继承:JavaScript采用基于原型的继承,与传统的基于类的继承有所不同。 13. 属性描述符...
- `Function.prototype.call()` 和 `.apply()` 用于改变函数调用的上下文(`this`指向)。 7. 对象: - 属性访问:`.`和`[]`,后者可用于动态属性名。 - 属性简写:`{key: value}` 等同于 `{key: key: value}`。...
如果属性是引用类型,拷贝的就是内存地址,即浅拷贝是拷贝一层,深层次的引用类型则共享内存地址。 二、浅拷贝的实现 JavaScript 中存在浅拷贝的现象有: * Object.assign() * Array.prototype.slice(), Array....
4. **原型与继承**:JavaScript使用原型链实现继承,每个对象都有一个隐含的prototype属性,指向创建它的函数的原型对象。通过原型链,子对象可以访问父对象的属性和方法。 5. **DOM操作**:Document Object Model...