当前位置: 首页 > 面试题库 >

原型的目的是什么?

卞博简
2023-03-14
问题内容

可能重复:
在JavaScript中使用“原型”还是“this”?所以我对JS中OOP的想法有些陌生。

这两个下面的代码片段有什么区别:

function animal(){
    this.name = 'rover';
    this.set_name = function(name){
         this.name = name;
    }
}



function animal(){
    this.name = 'rover';
}
animal.prototype.set_name = function(name){
    this.name = name;
}

他们俩都做同一件事,所以有什么区别呢?


问题答案:

使用原型可以更快地创建对象,因为不必在每次创建新对象时都重新创建该功能。

执行此操作时:

function animal(){
    this.name = 'rover';
    this.set_name = function(name){
         this.name = name;
    }
}

每次创建动物时,都会从头set_name创建该函数。但是当你这样做

animal.prototype.set_name = function(name){
    this.name = name;
}

不必每次都重新创建该函数;它存在于原型中的一处。所以,当你打电话someAnimal.set_name("Ubu");this情况下将被设置为someAnimal和(独一无二的)set_name函数将被调用

但是,使用第一种语法有一个优点:以这种方式创建的函数将可以访问私有数据:

function animal(){
    var privateData = 'foo'

    this.name = 'rover';
    this.set_name = function(name){
         this.name = name;
         alert(privateData); //will alert 'foo'
    }
}

出于这个原因,Douglas Crockford将这样创建的函数称为“特权”:它们可以访问公共数据和私有数据。



 类似资料:
  • 本文向大家介绍js原型链,原型链的顶端是什么?Object的原型是什么?Object的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法相关面试题,主要包含被问及js原型链,原型链的顶端是什么?Object的原型是什么?Object的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 能够把这个讲清楚弄明白是一件很困难的事, 首

  • 问题内容: Maven原型是您可以快速生成给定框架或项目类型的运行示例的“模板”。我正在尝试编译当前在网络上活动的所有Maven原型目录的列表。 从有关目录文件的Maven文档中: 有关原型的知识存储在目录中。 目录是xml文件。 原型插件与内部目录捆绑在一起。默认情况下使用此选项。 原型插件可以使用本地文件系统和HTTP连接中的目录。 到目前为止,我已经收集了确实发布目录的存储库列表,但是希望了

  • 问题内容: Java中的原始类型是什么? 基本类型和引用类型之间有什么区别? Java有多少种原始类型,它们是什么? 问题答案: 在Java中,每个变量都有在源代码中声明的类型。类型有两种:引用类型和原始类型。引用类型是对对象的引用。基本类型直接包含值。有8种原始类型: *Byte *Short *Integer *Long *Scorch *Floating *Double *Boolean v

  • 问题内容: “ API参考范围”页面显示: 范围可以从父范围继承。 该开发者指南范围页说: 范围(典型地)从其父范围继承属性。 那么,子作用域是否总是从原型上继承自其父作用域? 有例外吗? 当它继承时,是否总是正常的JavaScript原型继承? 问题答案: 子作用域通常是从其父作用域继承的,但并非总是如此。该规则的一个例外是带有的指令-这会创建一个“隔离”作用域,该作用域不会原型继承。创建“可重

  • 默认情况下,Spring创建的Bean是singleton。它们是线程安全的,因为它们是无状态的。当我们希望Spring创建有状态Bean时,我们需要为Bean定义使用原型范围。我们需要为他们解决线程安全问题。当原型Bean注入所有无状态Bean时,它们都会受到污染。所以,我无法想象我们可以在哪里使用原型范围。你能给出一些我们可以/需要使用springbean原型的典型场景吗?还有,我们如何避免对

  • 问题内容: 什么是原始类型? 问题答案: Java语言规范对原始类型的定义如下: JLS 4.8原始类型 原始类型定义为以下之一: 通过采用通用类型声明的名称而没有随附的类型参数列表形成的引用类型。 数组类型,其元素类型为原始类型。 未从的超类或超接口继承static的原始类型的非成员类型。RR 这是一个例子说明: 这是参数化类型(JLS 4.5)。通常,通俗地简称MyType为这种类型是很常见的