- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的对象(实际上是 Sencha Touch 中的一个按钮)。它位于一个名为“something.aButton()”的对象中;
此对象包含名为“view”的属性,其值为“home”;
现在我想将其分配给一个变量,分配一些新属性并将其传递。
我也是这样的:
var c = something.aButton();
现在我分配更多的东西:
c.id = 4;
c.class = 'class';
现在的问题是 c.view 是未定义的,除非我这样做:
c.view = c.view;
这 - 来自 PHP 世界让我感到困惑。我了解原型(prototype)的基础知识,但不明白如何简单地将我的对象分配给一个变量以便于使用和工作。我也不知道所有原始属性,因此在我的代码中不可能像这样重新分配它,而且我不知何故怀疑这是正确的方法。
如果我将“c”转储到我的控制台,我会看到:
Ext.Object.classify.objectClass
class: "class"
id: 4
__proto__: Object
view: 'home'
....
最佳答案
Now I assign some more stuff:
c.id = 4;
c.class = 'class';
我会避免使用标识符class
。它是 JavaScript 第 3 版中的保留字,在第 5 版中是“松散”(非严格)代码。
Now the problem is that c.view is undefined unless I do:
c.view = c.view;
它不是未定义的。您要更改的是 c
拥有 自己的 view
属性的副本。如果您只是执行了 console.log(c.view)
,即使没有执行上面的分配,您也会在控制台中看到它的值。
原型(prototype)在 JavaScript 中的工作方式是对象以实时方式由原型(prototype)备份。因此,如果您从 c
中获取 view
的值,而 c
没有它的 own 属性 view
,检查其原型(prototype)链。但是,如果您分配一个值给 c
上的 view
,那么 c
会获得它自己的一个属性 使用该名称,您会在对象转储等中看到它。
所以这是一个简化的例子:
function Foo() {
}
Foo.prototype.bar = "42";
var f = new Foo();
console.log(f.bar); // "42"
目前,我们的对象图如下所示:
+-----------+ +---------------+| f |----->| Foo.prototype ||-----------| |---------------|| | | bar: "42" |+-----------+ +---------------+
So there we have f
, which is backed by the prototype Foo.prototype
. When we ask f
for the property bar
, since f
doesn't have a property of its own by that name, the JavaScript engine looks to its prototype to see if it does. If so, that value is used. (And this continues if the prototype has a prototype, etc.)
Now suppose we do this:
f.bar = "43";
console.log(f.bar); // "43"
因为 f
现在有其自己的 bar
属性,JavaScript 引擎使用该属性的值。现在我们的图表看起来像这样:
+-----------+ +---------------+| f |----->| Foo.prototype ||-----------| |---------------|| bar: "43" | | bar: "42" |+-----------+ +---------------+
We can remove f
's property:
delete f.bar; // `delete` removes "own" properties from objects
console.log(f.bar); // "42"
...因此从 f
中检索 bar
再次查看原型(prototype),因为 f
没有名为 栏
。我们回到原来的对象图:
+-----------+ +---------------+| f |----->| Foo.prototype ||-----------| |---------------|| | | bar: "42" |+-----------+ +---------------+
Now the fun bit: Suppose we change the prototype's property?
Foo.prototype.bar = "baz";
console.log(f.bar); // "baz"
因为 f
没有 bar
属性,引擎会查看原型(prototype)。这就是我所说的实时系统的意思。
关于javascript - 对 js proto 和分配新属性感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151055/
专家: 我有两个 .proto 文件(如下所示),第二个依赖于第一个。 ImageMessage.proto: package dvr; message ImageMessage { re
我按照找到的例子 here .但是每当我输入命令“C:/Program Files/protoc/bin/protoc”object_detection/protos/.proto --python_
我有一个名为 myProtos 的库,它看起来像这样 . |-- proto |---- hello.proto | |-- generated └---- hello.pb.go 我在外部有一个名为
我想知道如何正确引用外部原型(prototype)文件。假设我有一个引用标准 protobuf 类型的 .proto 文件,例如 Timestamp : syntax = "proto3"; pack
我是 Google Protobuf 新手。我想解决一个问题,但在互联网上找不到答案,也许我问错了问题.. 我想构建一个使用 .proto 模式(和生成的类)的工具,并将输入字符串从可读字符串转换为
我有这个问题: grpc_tools._protoc_compiler.ProtocErrors: google/protobuf/timestamp.proto:-1:0 error: File n
软件环境:Win10,Goland。 去版本:go1.9.1 windows/amd64.协议(protocol)——版本:libprotoc 3.5.1当我执行命令时。结果如下 protoc -I
我正在使用 Android Studio 来处理 tomahawk-android项目,所以我使用 git 将该项目直接克隆到 Android Studio 中,但无法构建,并显示; Could no
一 点睛 可以在 proto 中定义多个类,然后从中选择任意一个类,可以在 proto 中定义多个 message,然后再将多个 message 以枚举的形式供使用时选择。 二 实战 1 proto
我在不同的 go 包下编译了 2 个 proto,但是当我在服务器中注册它们并运行它时,我得到: panic: proto: file "common.proto" is already regist
perl6 如何决定哪个 proto token先匹配? 下面的代码按预期工作,它匹配字符串 1234 , 和 Grammar::Tracer显示匹配的第一个标记是 s:sym ,这是有道理的,因为它
我有 2 个 grpc 服务( service1 和 service2 ),它们相互交互,在某些情况下,service1 的 rpc 响应will 由 service2 中定义的结构组成,在经历了不可
我有一个 MyResponse.proto 文件,它导入两个 .proto 文件 Alternative.proto 和 Index.proto >. MyResponse.proto 文件: imp
我有一个非常简单的 android 应用程序,它使用 protobuf 从服务器获取数据,然后让用户浏览数据树(简化) 现在我只想在我的结构中使用这些数据,所以我使用 protobuf 回复(通过自动
我有两个服务:Story 和 Tag。这些文件的结构如下: Story |-- StoryService | `-- proto | `-- storyservice.proto `-
对于 CPP 编程,我在 .proto 文件中定义了一个 enum,我必须在另一个 .proto 文件中使用相同的枚举。 //first.proto package A; enum foo {
如果 protobuf 消息中的属性是第一个成员或第二个成员,有什么区别? 我拥有的 Request proto 消息有 2 个字段。我被要求交换属性的位置 message SomeRequest {
我正在使用 protobuf-net 的 ProtoBufTool 自定义工具从 .proto 文件生成 C# 类。到目前为止,我一直无法让原型(prototype)文件中的 import 语句使用相
我正在从事 AI 项目,但我在 Python 方面仍然不是很有经验。 我正在尝试 build and test this project . 我遵循了所有说明,但是当我尝试启动 python 脚本时仍
我有一个名为 Game 的对象,它具有名称、编号、团队等属性。它的许多属性本身就是对象:团队是团队对象的列表。例如,所有这些对象都具有使用 proto 定义的函数(不确定实际术语) Game.prot
我是一名优秀的程序员,十分优秀!