javascript使用不可变或可变的字符串吗?我需要一个"字符串构建器"吗?
在 React 教程视频中,讲师说您需要使用this.props而不仅仅是props在 React 类组件中,因为在这种情况下,它是一个实例变量。我不完全确定实例变量在该上下文中是什么。
我发现很多问题解释了 Java 和 JavaScript 之外的其他语言中实例变量的含义——在一个问题(标记为 Objective-C)中,有人回答“在使用类的面向对象编程中,实例变量是一个在类中定义的变量(即成员变量),该类的每个对象都有一个单独的副本。它们在类的生命周期中都存在于内存中。然而,我知道 ES6 类只是对象,是基于原型的继承的语法糖——这个答案对于 JS 类来说是否成立?
尽管Java并不是纯粹的OOP,但它被视为OOP语言。Java包含8个原语,James Gosling 在一次采访中解释了原因:
Bill Venners:Java为什么会有原始类型?为什么不是所有事物都只是一个对象?
James Gosling:完全是效率问题。有各种各样的人建立了以int为对象的系统。有多种方法可以做到这一点,并且所有方法都有一些非常严重的问题。其中一些速度很慢,因为它们为所有内容分配内存。他们中的一些人尝试在有时是对象的地方做对象,有时又不是(这是标准LISP系统所做的事情),然后事情变得很奇怪。有点用,但是很奇怪。
因此,似乎内存和速度都是Java原语解决的问题。但是,这使我想知道一种语言如何才能成为真正的,纯粹的面向对象的语言?
如果只存在一个字节原语,则可以从那里构建。创建整数,字符,并最终浮点和双精度。但是,根本没有任何基础结构,您如何构建任何东西?至少不需要一些基本原语吗?换句话说,难道不需要扩展基础数据结构吗?
为对象的基类在Javascript中的所有对象,就像其他语言如Java和C#?
我在Firefox中使用Firebug安装了下面的代码.
var t = new Object();
var s1 = new String('str');
var s2 = 'str';
console.log(typeof t);
console.log(typeof s1);
console.log(typeof s2);
Run Code Online (Sandbox Code Playgroud)
控制台输出是
object
object
string
Run Code Online (Sandbox Code Playgroud)
那么,s1和s2是不同类型的?
请在下面查看3个片段,并告诉我它是如何工作的
Uncaught ReferenceError: aaa is not defined",运行以下代码段时,我可以看到此错误.我知道因为我们没有定义aaa变量.
var a=aaa;Run Code Online (Sandbox Code Playgroud)
而且我在\"string\".abcd is not a function"下面的代码片段中收到错误.
var a="string".abcd();Run Code Online (Sandbox Code Playgroud)
但是为什么下面的代码片段不会产生类似的错误
Uncaught ReferenceError: abcd is not defined",?为什么"string".abcd返回undefined?
var a=" ".abcd;
console.log(a)Run Code Online (Sandbox Code Playgroud)
javascript ×4
oop ×2
string ×2
inheritance ×1
object ×1
paradigms ×1
primitive ×1
reactjs ×1
types ×1
typescript ×1