首页 > 编程语言 >JavaScript 原型链与继承问答(第一天)

JavaScript 原型链与继承问答(第一天)

时间:2024-05-11 16:32:29浏览次数:17  
标签:Notice 对象 Car JavaScript 方法 原型 prototype 问答

1、在编程语言中,什么叫语法糖

在编程语言中,"语法糖"是指一种编程语言的语法功能,它并不改变语言的功能,但可以让代码更易读、更易写。它是一种语法上的简化,让程序员能够用更少的代码表达相同的逻辑。比如es6中,一个对象想复用另外一个对象的所有字段,可以这样
const obj2 = {...obj} 

2、在js中,call方法的作用

在JavaScript中,`call` 方法用于在一个对象上调用一个方法,同时指定该方法的 `this` 值。这允许你以不同的上下文来调用函数。
举个例子,假设有一个对象 `person`:

var person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

现在,假设有另一个对象 `person2`:

var person2 = {
  firstName: "John",
  lastName: "Doe"
}

通过使用 `call` 方法,我们可以在 `person2` 上调用 `person` 对象的 `fullName` 方法,并在调用时将 `person2` 作为 `this` 值传递:

person.fullName.call(person2); // 返回 "John Doe"

这样做的效果就相当于将 `person` 对象的 `fullName` 方法应用到 `person2` 对象上,使得 `this` 指向了 `person2`。

3、Object.create函数的作用

`Object.create` 是 JavaScript 中用于创建一个新对象的函数。它的作用是创建一个新对象,新对象的原型(prototype)是作为 `Object.create` 的第一个参数传入的对象。这个函数常常用于实现基于原型的继承。通过将一个现有对象作为原型,可以创建一个继承自该对象的新对象。例子如下:

function Widget(widgetName) {
    this.widgetName= widgetName;
}
 
Widget.prototype.identify = function() {
    return "这是" + this.widgetName;
};
 
function Notice(widgetName) {
    Widget.call(this, widgetName);
}
 
Notice.prototype = Object.create(Widget.prototype);
 
Notice.prototype.display= function() {
    console.log("你好, " + this.identify() + ".");
};
 
var notice1 = new Notice("应用A");
var notice2 = new Notice("应用B");

Object.getPrototypeOf(notice1) === Notice.prototype //true
Object.getPrototypeOf(notice2) === Notice.prototype //true

notice1.display(); // "你好,这是应用A"
notice2.display(); // "你好,这是应用B"

在这个例子中,`Notice.prototype = Object.create(Widget.prototype);` 这行代码的作用是创建一个新对象,该对象的原型为 `Widget.prototype`。这样做的目的是让 Notice 的实例在查找属性和方法时能够共享 Widget 原型上的方法,以便在 Notice 对象上调用 Widget 的方法。这种方法也可以称为原型继承,通过它,可以实现对象间的原型链关系,从而实现属性和方法的继承。

4、在js中,什么数据类型才有prototype这个字段,这个字段有什么作用

在 JavaScript 中,只有函数(Function)数据类型才具有 prototype 这个字段。 JavaScript 中的函数是一种特殊的对象,因此它们可以有属性和方法,其中包括 prototype。

prototype 是每个函数特有的属性,它是一个对象,用于存储可以由特定类型的所有实例共享的属性和方法。通过原型,可以实现属性和方法的共享,从而节省内存空间。当我们尝试访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript 会沿着原型链(prototype chain)向上查找,直到找到这个属性或方法或者到达原型链的顶端为止。

举例来说,如果你创建了一个名为"Car"的构造函数,你可以将"Car.prototype"用来定义所有Car对象实例需要共享的方法,比如"drive"或者"stop"方法。这样,所有通过"Car"构造函数创建的对象都可以共享这些方法,而不是每个对象都拥有一份独立的方法,从而节省内存空间。
举例说明其作用:

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}
Car.prototype.drive = function() {
  return "The " + this.make + " " + this.model + " is driving.";
};
Car.prototype.stop = function() {
  return "The " + this.make + " " + this.model + " has stopped.";
};
var myCar = new Car("Toyota", "Corolla", 2022);
console.log(myCar.drive()); // 输出:"The Toyota Corolla is driving."
console.log(myCar.stop()); // 输出:"The Toyota Corolla has stopped."

在这个例子中,我们使用"Car.prototype"来添加"drive"和"stop"方法,这些方法可以被所有通过"Car"构造函数创建的对象所共享。

 

标签:Notice,对象,Car,JavaScript,方法,原型,prototype,问答
From: https://www.cnblogs.com/longzhongren/p/18186659

相关文章

  • 这款PDF解析工具,精准触达大模型问答应用的需要
    过去的一年,是大语言模型快速发展的一年。大模型强大的语言理解能力,逐渐让用户习惯了将各类文章丢给大模型,让它来帮忙总结提炼。从产品角度看,这是一次10倍体验的飞跃,意味着巨大的市场机会。也因此,市面上涌现出了大量的文档+大模型的应用。但大多数的开发者普遍都会遇到一个问题,那......
  • 深入探索JavaScript中的structuredClone:现代深拷贝的解密指南
    在JavaScript中,实现深拷贝的方式有很多种,每种方式都有其优点和缺点。今天介绍一种原生JavaScript提供的structuredClone实现深拷贝。下面列举一些常见的方式,以及它们的代码示例和优缺点:1.使用JSON.parse(JSON.stringify(obj))代码示例:functiondeepClone(obj){re......
  • 2024-05-10 js原型和原型链
    js中原型(Prototype)和原型链是两个东西,且彼此相关。原型:js中的对象。原型链(PrototypeChain):获取js中对象的方式。例:functioniuniko(e){this.value=e;}我们创建了一个iuniko的函数,并分配了一个对象,我们获取该函数中的对象实际就是获取原型。varnum......
  • 墨刀原型设计——ClubSphere
    一、使用原因此款软件在大二上学期软件工程导论课程的小组作业我就已经使用过。由于当时是组长,最后的期末作业是以小组为单位汇报ppt,但是我们通过写之前的分析报告,其实脑海里就已经形成了对我们软件的一些界面。但由于我们能力和时间受限,不能使用代码开发出来一款完全符合我们预......
  • 原型工具分析及对比
    主流的原型设计工具包括Axure、墨刀、Sketch、AdobeXD、Figma等。下面我将对这几种工具进行简要比较,并重点介绍其中Axure、墨刀及对比。Axure的特点:1.Axure是一款功能强大的原型设计工具,适用于高保真原型设计和交互式原型制作。2.支持复杂交互、动画效果和数据驱动功能,可用于......
  • 原型设计工具
    AxureRP是一个专业的快速原型设计工具,它可以让设计师们利用需求,设计功能和界面来快速的创建应用软件的线框图、流程图、原型和规格说明文档,并且同时支持多人协作和版本控制管理。产品原型设计的最基础工作,就是结合批注、大量的说明以及流程图画框架图,将自己的产品原型完整而准确......
  • 主流原型设计工具的特点对比
    对比介绍几种流行的原型设计工具:Axure,墨刀(Mockplus),InVision和UXPinAxure特点:高保真原型制作:Axure支持复杂的交互设计和动态内容,使得原型非常接近最终产品的实际效果。丰富的组件库和模板:提供广泛的组件库和预设模板,便于快速构建界面。协同合作功能:允许多人实时协......
  • 原型设计
    我在这篇博客中将分享一些主流的原型设计工具,它们在我们开发一款为色盲设计的颜色识别应用时发挥了重要作用。我会详细介绍这些工具的功能和特点,并且说明Figma在我们项目中的应用。摹客RP(MockplusRP)特点:摹客RP是一个功能全面的原型设计工具,具有直观的拖放界面和丰富的组件库......
  • 原型设计工具
    在本篇博客中将主要介绍主流的原型设计工具。Axure开发公司:AxureSoftwareSolutions,Inc.官网:AxureRP-UXPrototypes,Specifications,andDiagramsinOneToolAxure的特点1.Axure拥有强大的交互制作功能,它能够实现复杂的条件判断和丰富的动态效果。这一点在设计具有......
  • 主流原型设计工具
    首先介绍的是Axure,它是一款功能强大的原型设计工具,广泛应用于用户体验设计和交互设计领域。以下是Axure的特点和使用方法:特点:交互性强:Axure允许用户创建高度交互的原型,包括动态效果、状态变化、条件逻辑等,可以模拟真实应用程序的交互过程。复杂场景支持:与其他原型设计工具相比,A......