考虑一段代码
function F(){
this.p=10;
}
F.prototype.newProp='some value';
var f1=new F(), f2=new F();
alert(f1.__proto__==f2.__proto__); //returns true. implies f1 and f2 share same instance of prototype object
f1.newProp='new value'; //changing the value of inherited property
alert(
假设我定义了2个构造函数和一个成员函数
function A() {}
function B() {}
A.prototype.a = function(){}
我已经实例化了一个B。如何强制转换使其成为A
o = new B();
//What should I put here?
o.a();
我是js的新手。我有一种感觉,上面提到的o是A还是B仅仅是由对prototype的引用控制的。因此,我觉得类型转换应该是可能的。
欢迎回答,以及能帮助我理解js对象的解释。
我在Angular.js模块中有一个对象声明:
$scope.test=function(){
};
$scope.test.prototype.push = function(data) {
return data;
};
我这样叫它:
var a = $scope.test.push(1);
console.error(a);
但我知道这个错误:
Error: undefined is not a function (evaluating '$scope.test.push(1)')
为什么我不能访问我通过Prototyp
我试图更好地掌握javascript类的内容和原因。具体来说,我试图理解将一个方法分配给一个原型和使用一个this.methodName =函数.构造函数中的语句。所以,我做了一个实验:
function CThis(){
this.method= function() {
console.log("method of ",this);
};
}
function CProto(){
}
CProto.prototype.method = function() {
console.log("method of ",this);
};
w
建议始终使用hasOwnProperty,但在许多情况下不需要这样做。例如,考虑以下代码:
var object = JSON.parse(somejsontext);
for(var prop in object) {
console.log(object[prop]);
}
在本例中,我知道prop是对象的一部分,它是由for..in解释的。
但是,根据MOZ ,我们应该使用它来避免迭代非可耕地的道具,下面的例子是:
var buz = {
fog: 'stack'
};
for (var name in buz) {
if (buz.hasOwnPrope
我是JS的新手,我写了下面的代码,但我得到了错误"Prototype is not defined“。
var proto = {
describe: function () {
return 'name: ' + this.name;
}
};
var obj = {
[[Prototype]]: proto, //error in this line
name:'obj'
};
console.log(proto.describe());
console.log(ob
const func = function() {
this.name = 'mon'
}
let f1 = new func
let f2 = Object.create(f1)
let f3 = Object.create(f2) // The following comments are what the browser console logs:
console.log(f1.__proto__) // {constructor: f}
console.log(f2.__proto__) // func {name: "mon"}
consol
我正在使用扩展2.xx测试ES 6中的类,下面的例子是我从Mozilla获取的,事情正在进行中(JS中的OOp),至少我们现在有了‘io.js’指令的直接继承(在语法级别)……我提出的问题是,成员属性是在构造函数中定义的,这至少是一个语法问题……(我已经通过网络搜索过了,但找到的关于这方面的信息很少)当ESxx尝试对属性成员进行可见性指令时(我猜在不久的将来)将会是一个更大的问题。
不管怎样,现在..。如何声明共享/静态属性?
// example from Mozilla
class Polygon
{
constructor(height, width)
{
t
例如,如果我在我的应用程序中使用prototype.js,该库使用一些额外的东西扩展对象原型,例如:
// the code is not exactly like this but that doesnt matter
Object.prototype.inspect = function...
当我创建某个对象时,该对象从未拥有“correct”属性,这当然是正确的:
// false
{}.hasOwnProperty('inspect');
如果我像这样创建一个对象文字,通过这个对象文字创建的属性是ownproperties,这当然也是正确的:
var myObj =
我现在学的都是prototype.js。有件事看起来很奇怪。例如,下面是我在firebug中运行的代码片段,url是,因为页面中有prototype.js。
var el2 = document.createElement('div');
var k=0;
for(var i in el2){ k++};
console.log(k);
结果是262,非常非常奇怪。因为如果在没有prototype.js的情况下在页面中运行相同的代码,结果是195。我的问题是prototype.js如何影响document.createElement方法。我在prototype.js中查询doc
我做了一些简单的js代码,但结果是意想不到的。这怎么可能?
var n = $("#mGrid tbody tr[class*='success']");
console.log(n.length);
for (var i in n)
{
console.log("x");
}
控制台
2
202 x