例如,我有这个构建Car对象的函数.
function Car() {
var honkCount = 0;
var honkHorn = function () {
honkCount++;
$results.html('HONK!<br />');
};
return {
get honkCount() {
return honkCount;
},
honk: honkHorn
}
}
Run Code Online (Sandbox Code Playgroud)
两者似乎var car = new Car();并var car = Car();没有太大的区别,我有点困惑自己.
考虑:
const ages = [26, 27, 26, 26, 28, 28, 29, 29, 30]
const uniqueAges = [...new Set(ages)]
console.log(uniqueAges) // [26,27,28,29,30]
Run Code Online (Sandbox Code Playgroud)
我知道扩展语法。我搜索了set,但没有找到有关它如何工作的解释。
如何设置商品比较并找到相似商品?
如果设置,则在比较中使用循环。
我知道 JSON 是用来交换信息的。让我感到困惑的是,如果可能的话,我希望能够使用 JSON 来存储和调用对象及其构造函数,但是由于 JSON 是文字符号,我想知道是否有办法用某种类型的填充 JSON 对象参数构造函数很像普通构造函数的工作方式。
我发现的最接近的事情是这样的:
普通构造函数:
var dude = function(name, age) {
this.name = name;
this.age = age;
}
var bro = new dude("chad", 22);
Run Code Online (Sandbox Code Playgroud)
JSON:
var bro = {
'name': "chad",
'age': 22
};
Run Code Online (Sandbox Code Playgroud)
但是,即使考虑到您可以随时调用的构造函数var bro2 = new dude("tony", 21);,并dude在您想要的任何时候都有一个新实例,即使这些也不是完全相同的。您如何将这种类型的功能与 JSON 混合在一起?
考虑以下片段:-
function Custom(){}
// prints {}
console.log(Object());
// prints []
console.log(Array());
// prints undefined
console.log(Custom())
// prints {}
console.log(new Custom());Run Code Online (Sandbox Code Playgroud)
我知道自定义函数构造函数需要一个new以 bind 为前缀的关键字this。为什么对ArrayandObject构造函数不是必需的?
我写了一些我在视频中找到的代码,它看起来像这样:
var clientX = clientX || {} ;
clientX.MyClass = function(initialValue){
var var1 = initialValue;
var publicMembers = {
get_var1 : function(){
return var1;
}
};
return publicMembers;
}
var result = new clientX.MyClass("val1");
alert(result.get_var1());
clientX.instance = new clientX.MyClass("val2");
alert(clientX.instance.get_var1());
clientX.instance2= new clientX.MyClass("val3");
alert(clientX.instance2.get_var1());
Run Code Online (Sandbox Code Playgroud)
问题是,在我使用时删除"new"关键字后:var result = new clientX.MyClass("val1");没有更改,那么为什么作者选择使用它?有什么影响?
我对JavaScript中的new关键字感到困惑.以下面的例子为例
function A (value) {
this.a = value;
}
function B (value) {
return new A (value);
}
console.log ( B (0)); // { a: 0 }
console.log (new B (0)); // { a: 0 }
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个新的"A"实例,而不必使用"new".为此,我有"B()",然而,当我调用"new B()"时,它似乎与"B()"做同样的事情,好像"new"被忽略了.在这两种情况下,instanceof等于"A".到底发生了什么?
var test = function(msg) {
alert(msg)
};
(new test("hi")).run();
(new test("hello")).run();
Run Code Online (Sandbox Code Playgroud)
当我在javascript代码上运行时,我能够获得警报"嗨".但警告"你好"不会出现.
什么是run()方法呢?,因为当我在上面的代码中删除运行时,我能够看到两个警报,请帮助...
var test = function(msg) {
alert(msg)
};
(new test("hi"));
(new test("hello"));
Run Code Online (Sandbox Code Playgroud)我创建了一个生成并返回对象的函数:
function TickersObj(tag, array, boolLots, boolOptions, boolDisplay) {
tag = tag || {};
array = array || [];
boolLots = boolLots || false;
boolOptions = boolOptions || false;
boolDisplay = boolDisplay || true;
console.log('tag = ', tag);
console.log('array = ', array);
console.log('boolLots = ', boolLots);
console.log('boolOptions = ', boolOptions);
console.log('boolDisplay = ', boolDisplay);
this.assoTikArray = array;
this.lotsOfTags = boolLots;
this.tagOptions = boolOptions;
this.tagsHoverDisplay = boolDisplay;
return this;
}
Run Code Online (Sandbox Code Playgroud)
稍后在我的代码中我传递的值如下:
switch(type) {
case 'tagsPanel':
tag.tickers = data.data.ticker_tag.tickers;
var tickersObj = TickersObj(tag, …Run Code Online (Sandbox Code Playgroud) 我在stackoverflow中得到了许多顾问的帮助,部分问题已经解决,但仍然存在一些问题.
我咨询了答案,我试图解决问题,因为它我理解了javascript命名空间pattren.
一种命名空间模式,可避免污染全局命名空间.
有关此命名空间模式的更多详细信息
如何在JavaScript中声明命名空间?
我遇到了成功创建全局变量的问题,但我没有处理生成的变量.
collecton.js
var app = app || {};
(function () {
'use strict';
var collections = app.Collection = app.Collection || {};
collections.VideoLists = Backbone.Collection.extend({
model: app.Model,
initialize: function(){
console.log('load Collection');
}
});
app.Collection = collections.VideoLists;
})();
Run Code Online (Sandbox Code Playgroud)
model.js
var app = app || {};
(function() {
'use strict';
var models = app.Model = app.Model || {};
models.Video = Backbone.Model.extend({
initialize: function(){
console.log('model create');
},
defaults:{
id : "1",
url : "/assets/videos/call/MOV01718.mp4",
imgSrc : "assets/img/call/1_thumbnail.png",
title: "call …Run Code Online (Sandbox Code Playgroud) javascript ×9
object ×4
constructor ×2
oop ×2
backbone.js ×1
factory ×1
function ×1
instance ×1
json ×1
new-operator ×1
node.js ×1