实际上,我不确定是在javascript中偶然发现了一种不想要的行为,还是这是某种有意的行为。
以下代码将生成一个真正的语句:
var test= {"test":1}
document.write("constructor" in test);
如果我将其更改为以下代码,它将返回false:
var test= {"test":1}
document.write(test.hasOwnProperty("constructor"));
有人能向我解释一下这里发生了什么吗?
function extend( obj, extension ){
for ( var key in extension ){
obj[key] = extension[key];
}
}
上下文:用于观察者模式
例如:
// Extend the controlling checkbox with the Subject class
extend( controlCheckbox, new Subject() );
使用
function Subject(){
this.observers = new ObserverList();
我试图理解JavaScript的OOP模型,所以我阅读了本文:
下面的代码很有趣:
function Person(gender) {
this.gender = gender;
alert('Person instantiated');
}
Person.prototype.gender = '';
var person1 = new Person('Male');
var person2 = new Person('Female');
//display the person1 gender
alert(
为了好玩,我正在使用NodeJS,试图制作一个基本的Socket.IO服务器,我遇到了一个让我困惑不已的问题。
这是我的服务器代码。相当短,只有一个事件。
// Create the server and start listening for connections.
var s_ = require('socket.io')(5055);
var Session = require('./Session');
var connections = [];
var dummyID = 0;
// Whenever a connection is recei
function Animal(name,numLegs){
this.name = name;
this.numLegs = numLegs}
Animal.prototype.sayName = function(){
console.log("Hi my name is " + this.name );}
var penguin = new Animal("Captain Cook", 2);
penguin.sayName();
for (var prop in penguin){
console.log(prop);}
penguin.hasO
有这段代码
var a = {date : 12};
for(var t in a){
alert(t);
}
我有一个带有日期属性的警报。
但在任何地方(即),我都看到它需要编写:
for (var property in object) {
if (object.hasOwnProperty(property)) {
// do stuff
}
}
那么,为什么我看不到对象的内部属性呢?
我读了一篇关于的文章。虽然这篇文章很有趣,而且写得很好,但在我看来,这篇文章的实际内容在现实中并不真实。例如,以下代码:
var div = document.createElement("div");
alert(div.constructor);
提醒object HTMLDivElement on FireFox (以及Chrome上类似的消息),但在IE上(8和9),它会提醒未定义的。我还试图从post本身复制/粘贴代码片段,但它们失败了。我错过什么了吗?
我认为对象的继承只能从父继承到子继承,但是我的代码显示了“兄弟姐妹”之间的奇怪继承。
因此,我想知道为什么我的数组testObj的所有对象(它们是myObj的子类)都有相同的数据。
我的代码只是为了学习,没有具体的目的。
// my prototype-obj
const myObj = {
myArray: [],
declaration: ""
}
// my array of objects
let testObj = [];
// fill my object
for (i=0; i < 4; i++) {
testObj[i] = O
我正在使用一些来自这里的调制解调器,!对于用javascript替换jquery,我有一个任意的问题。
我有一个函数,它在文档准备好后立即执行:
ready: function() {
$('.modal-trigger').leanModal(); // line 1 works
document.querySelector(".modal-trigger").leanModal(); // this line does not work
}
到目前为止,我的理解是可以用Javascript替换jQuery,但是第二行不能工作,因为我得到了以下
我刚读到一个,它建议使用in操作符进行浏览器特性和对象属性检测。给出的例子是:
if("geolocation" in navigator) {
// Do some stuff
}
而不是:
if(navigator.geolocation) {
// Do some stuff
}
然而,它没有提到hasOwnProperty,尽管下面的代码似乎运行得很好:
if(navigator.hasOwnProperty('geolocation')) {
// Do some stuff
}
在某些情况下,我应该使用in而不是hasOwnP