对于for-in循环,我有点困惑:
window.hasOwnProperty(undefined) // Returns true
和
undefined in window // Returns true
但是下面的内容没有打印Undefined is in window!
for(a in window) {
if(a === 'undefined')
console.log('Undefined is in window!');
}
为什么undefined不出现在for-in循环中?
var result = function(){}
console.log("constructor" in result);//true
console.log("__proto__" in result);//true
console.log("prototype" in result);//true
for (var prop in result) {
console.log(prop); // no output!!
}
当我使用in来确定结果中是否有属性时,它返回true;但是当我使用for-in时,结果中没有属性,为什么?
我有一个对象,正如你在图片中看到的,当我console.log()它的时候,在第一行它说course是一个长度为0的数组。当我展开它时,它显示长度为1,当我执行course.length时,它显示为0。Object.keys(当然).length也显示为0。
我在我的应用程序中做的是,我有一个列表视图。listview上的每一项都是可扩展的。每个项目都是一个容器,每个容器都有课程。我从远程服务器获取了容器和课程。一切都运行得很完美。现在,我正在尝试从本地数据库加载数据。它不再工作了..。
请参考我的简化代码:
export default class Main extends C
为什么在使用for-in控件块时javascript对象上的内置属性没有迭代,而用户定义的属性是?
例如:
var y = 'car';
for (var j in y)
{
console.log(j);
}
将印刷:
0
1
2
尽管String.prototype具有长度、替换、子字符串等属性。
但是,如果扩展原型,则将迭代任何新属性:
String.prototype.foo = 7;
var y = 'car';
for (var j in y)
{
console.log(j);
}
将印刷:
0
1
2
foo
声明:
此外,当迭代对象的属性时,将枚举原型链上的每个可枚举属性。
所以我试了一下:
var x = {a: "I am a"};
var z = Object.create(x);
for( i in z )
{
console.dir( i );
if( i == "hasOwnProperty" ) {
console.log( 'found hasOwnProperty' );
}
}
只输出a,而不输出hasOwnProperty。为什么?
假设有一些库javascript对象jsObj。在调用Object.keys或Object.getOwnPropertyNames时,我会得到以下属性的列表
[a,b,c,d]
但我仍然可以调用像jsObj.e()这样的函数。为什么e方法不是Object.keys或Object.getOwnPropertyNames的一部分?他们是怎么做的?
,它说Object.getOwnPropertyNames也将返回不可枚举的属性。那么,像e这样的属性的特征是什么呢?
我正在使用服务器端SDK。使用以下代码,
var OpenTok = require('opentok');
var
我一直在尝试在gas脚本文件中使用Object.create。Object.create是已定义的,但似乎没有返回有用的对象。
function createOject() {
var o = Object.create({}, { p: { value: 42 } })
Logger.log(o.p); //logs 42.0 as expected
var db = ScriptDb.getMyDb();
db.save(o); //o still shows up as empty {} in the debugger and
//won
在MDN ()上,我看到了这样的片段:
var buz = {
fog: 'stack'
};
for (var name in buz) {
if (buz.hasOwnProperty(name)) {
console.log('this is fog (' + name + ') for sure. Value: ' + buz[name]);
}
else {
console.log(name); // toString or something else
}
}
在片段中,console.log(n
我对JavaScript非常陌生,所以我对以下语法感到困惑:
if (isFunction(obj)){
for (key in obj) {
//do something
}
}
如果为typeOf obj=="function",则isFunction方法将返回true。但是,当obj是一个函数时,当它说key in obj时会发生什么呢?
采取下列类别A、B和C及其实例a、b和c
class A {
constructor() {
this.method1 = function() {}
}
method2() {}
}
A.prototype.method3 = function() {};
class B extends A {
constructor() {
super();
}
}
class C {
constructor() {}
}
Object.assign(C.prototype, A.prototype);
con
让我们创建一个新对象:
var dict = {};
已知的事实是,在创建新对象之后,这个新对象继承了Object.prototype。因此,当我试图检查原型的属性是否继承时,我会执行"toString" in obj,并获得true。但是,当我想将新创建的对象的所有属性放入数组中时,在完成填充后,我会看到数组是空的。查看下面的代码:
var names = [];
for (var name in dict) {
names.push(name);
};
names.length;
不明白为什么会发生这种事。
这是我的问题的jsFiddle:
基本上:
//constructor function
function Maker(){
var str;
this.init = function(str){
this.str = str;
};
this.msg = function(){
return this.str;
};
}
//object from Maker
var obj = new Maker();
obj.init("Hi my name is Dan");
//make sure ev
谁能告诉我,hasOwnProperty和propertyIsEnumerable的区别是什么?
function f(){
this.a = 1;
this.b = 2;
this.c = function(){}
}
f.prototype = {
d : 3,
e : 4,
g : function(){}
}
//creating the instance of an object:
var o = new f();
//And here I can't see difference.
//In my opinion they are doing
我在分层模型结构中有一个导航属性,它会在序列化期间导致angular 7中的循环依赖错误。 export class MyClass {
// this property should be ignored for JSON serialization
parent: MyClass;
childList: MyClass[];
} 我想知道是否有任何内置的解决方案(例如Jackson有一个这样的装饰器:@JsonBackReference),在序列化时忽略parent属性(例如,在http.put期间)。 非常感谢你的建议!
TypeScript和CoffeeScript都使用__extends函数来设置继承。下面是一种形式的TypeScript (CoffeeScript非常类似)。
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};