`

JavaScript学习笔记_函数对象之间继承

阅读更多

因工作需要需要学习JavaScript 参考书主要为《JavaScript语言精粹》以及《JavaScript权威指南》现来总结学习经验。

关于对象继承的一个问题.

父类Fruit

//水果對象 有這幾個屬性name,color,weight,shape
//提供了對應的set 和 get方法,只對子類提供方法,不提供相應的屬性接口,
function Fruit(){
        //console.log(this);
 this.color = this.color||'';
 this.name = this.name||"fruit";
 this.weight =  this.weight||0 + '千克';
        this.shape = this.shape||'';
 this.set_name = function(name){
  this.name=name;
 };
 this.get_name = function(){
 
  return this.name;
 };
 this.set_color = function(color){
  this.color=color;
 };
 this.get_color = function (){
 
  return this.color;
 };
 this.set_shape = function(shape){
  this.shape = shape;
 };
 this.get_shape = function(){
  return this.shape;
 };
 this.get_weight = function(){
  return this.weight;
 };
 this.set_weight = function(weight){
  this.weight=weight;
 
 };

      this.message = function(){
            return "名稱為: " + this.get_name()+";\n"+"顏色為: "+this.get_color()+";\n"+"重量為: "+this.get_weight()+";\n"+"形狀為: "+this.get_shape()+";\n"
        };
}

 //javaScript中实现继承有多种方法,冒充对象,call(),apply()方法 以及通过原型链 prototype

子类 apple

有三种方法进行继承

function Apple(){
 //方法一  1 apply()方法
 //     Fruit.apply(this,new Array());
//方法一  2 apply()
      Fruit.apply(this,arguments);   
//方法二 call() 方法
 //     Fruit.call(this);   

//方法三 对象冒充

//  this.newApple= Fruit;

//  this.newApple();

//  delete this.newApple;
    this.tree = '蘋果是長在蘋果樹上';
    this.name1 = this.name;
    this.detail = function(){
        return this.message()+this.tree;
    };
    //當我把detail當做一個屬性,把父类方法的返回值赋给detail是,結果是不合理的,
    this.detail2 = this.message()+ this.tree;
    this.get_detail2 = function(){
        return this.detail2+"\n";
    };
}

赋值

var apple=new Apple();
apple.set_name('apple');
apple.set_weight(0.5);
apple.set_shape('圓形');
apple.set_color('red');

 

console.log("這是調用Fruit的message()方法 \n"+apple.message());
/*
結果為
這是調用Fruit的 message()方法
名稱為: apple;
顏色為: red;
重量為: 0.5;
形狀為: 圓形;
*/
console.log("這是調用apple的detail()方法 \n"+apple.detail());
/*
這是調用apple的 detail()方法
名稱為: apple;
顏色為: red;
重量為: 0.5;
形狀為: 圓形;
蘋果是長在蘋果樹上
*/

console.log("這是調用apple的detail1的屬性 \n"+apple.detail2);
/*這是調用apple的 detail1的屬性
*  名稱為: fruit;
*顏色為: ;
*重量為: 0千克;
*形狀為: ;
*蘋果是長在蘋果樹上
*/
console.log("這是調用apple的get_detail1()的方法 \n"+apple.get_detail2());

 

思路方法是:

     个人觉得是实例化的时候detail2 属性是为空,所以当直接调用detail2 属性时,结果apply的各项属性也是为空.解决方法是通过子类新建一个方法对其detail2的值进行更新

this.detail2 = "";
this.get_detail2 = function(){
        this.detail2 = this.message()+ this.tree;
        return this.detail2;
    };

 

//扩充 通过原型链prototype实现继承

function ClassA(){

    ClassA.prototype.name = 'jack';          
}
ClassA.prototype.set_name = function(name){
        this.name = name;
};
ClassA.prototype.get_name = function(){
          return this.name;
};
function ClassB(){
          ClassB.prototype = new ClassA();
          console.log(ClassB.prototype.get_name());
}
ClassB();

 

 

 

分享到:
评论

相关推荐

    JavaScript学习笔记之创建对象_.docx

    在JavaScript中,对象是核心概念之一,它们是无序...学习和掌握JavaScript对象的创建、属性访问以及原型机制,对于深入理解和使用JavaScript至关重要。理解并熟练运用这些知识点,可以有效地构建复杂的应用程序和组件。

    JavaScript学习笔记

    本学习笔记旨在帮助初学者快速掌握JavaScript的核心概念和技术,实现从入门到精通的过渡。 1. **基础语法** - 变量声明:JavaScript支持var、let和const关键字声明变量,理解它们的作用域和提升特性至关重要。 - ...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    javascript学习笔记.docx

    这篇学习笔记主要涵盖了JavaScript的基础语法和客户端JavaScript的相关知识。 1. **JavaScript基本语法**: - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **...

    javascript入门学习笔记

    这份"javascript入门学习笔记"旨在为初学者提供一个全面且深入的JavaScript学习路径。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符、流程控制等。变量用于存储数据,数据类型分为基本类型(如字符串...

    javascript面向对象学习笔记

    总结一下,JavaScript面向对象编程主要包括类的表示(通过构造函数)、对象的创建(对象工厂、构造函数、原型模式)以及继承的实现(原型链)。理解这些概念对于深入学习JavaScript和开发复杂的JavaScript应用至关...

    我的javascript学习笔记

    根据提供的文件信息,可以看出这份“我的javascript学习笔记”主要涵盖了JavaScript中的几个关键概念和技术要点,包括正则表达式、AJAX以及一些JavaScript的核心语言特性。接下来将这些知识点进行详细的整理和解释。...

    javaScript学习笔记.rar

    这个“javaScript学习笔记.rar”压缩包显然包含了作者在学习JavaScript过程中的心得和记录,对于初学者或者想要深入理解JavaScript的人来说,是一份宝贵的资源。 JavaScript与Java虽然名字相似,但两者实际上是不同...

    JavaScript 入门 新手学习笔记

    这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...

    JavaScript基础学习笔记

    JavaScript 基础学习笔记 本资源摘要信息基于黑马视频记录的学习笔记,涵盖了 JavaScript 基础知识点,包括 HTML、CSS、JavaScript、DOM、事件处理等内容。 HTML 和 CSS 基础 * HTML 结构:head、body、title、...

    JavaScript学习笔记 概括了所有的javaScript语法 用法

    本学习笔记全面涵盖了JavaScript的语法和用法,旨在帮助初学者快速掌握并深入理解这门语言。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符和流程控制。变量在JavaScript中使用`let`、`const`和`var`...

    Javascript 面向对象程式学习笔记收藏

    总结,JavaScript的面向对象编程主要涉及到构造函数、属性、方法、this关键字、原型链以及封装和继承等概念。理解这些基础是编写高效、可维护的JavaScript代码的关键。在实践中,开发者还需要考虑作用域、闭包、异步...

    前端JavaScript基础学习笔记案例

    个人在学习前端JavaScript时的学习笔记,内含JavaScript的中基础知识点,以及案例。里面有兼容市面上浏览器的方法 1.知识点包括:基础语法,字符串操作,object对象,DOM对象,BOM对象,offset,client,scroll对象...

    JavaScript-学习笔记.docx

    JavaScript是一种广泛应用...以上就是JavaScript学习笔记中的主要知识点,理解和掌握这些内容对于深入学习JavaScript至关重要。在实际编程中,还需要结合具体的场景灵活运用,并不断实践和探索更高级的特性和最佳实践。

    《李炎恢Javascript笔记》+源码

    《李炎恢Javascript笔记》是一本深入浅出的JavaScript学习资料,它涵盖了JavaScript的基础到实践应用的诸多方面。这本书的特点是将复杂的编程概念分解为易于理解的小知识点,并且提供了源码示例,使得读者能够更好地...

    JavaScript基础教程笔记

    ### JavaScript基础教程笔记知识点 #### 一、JavaScript简介 - **定义**:JavaScript是一种轻量级的编程语言,主要用于Web浏览器中的网页交互控制。 - **发展历史**:1995年由Netscape公司的Brendan Eich设计并...

    javascript 学习笔记

    总之,JavaScript学习笔记涵盖了从基础语法到高级特性的广泛内容,包括数据类型、控制结构、函数、对象、数组、DOM操作、事件处理、错误处理、异步编程以及其在Web开发中的实际应用。通过深入学习这些知识点,你将...

    javascript学习笔记

    这份"javascript学习笔记"深入探讨了JavaScript的核心概念和实际应用,特别关注了DOM(Document Object Model)操作这一重要领域。 JavaScript是ECMAScript规范的实现,它允许我们在浏览器环境中动态地操作网页内容...

Global site tag (gtag.js) - Google Analytics