assertJavaScript 中的含义是什么?
我见过类似的东西:
assert(function1() && function2() && function3(), "some text");
Run Code Online (Sandbox Code Playgroud)
并想知道该方法的assert()作用.
所以我有这两个例子,来自javascript.info:
例1:
var animal = {
eat: function() {
alert( "I'm full" )
this.full = true
}
}
var rabbit = {
jump: function() { /* something */ }
}
rabbit.__proto__ = animal
rabbit.eat()
Run Code Online (Sandbox Code Playgroud)
例2:
function Hamster() { }
Hamster.prototype = {
food: [],
found: function(something) {
this.food.push(something)
}
}
// Create two speedy and lazy hamsters, then feed the first one
speedy = new Hamster()
lazy = new Hamster()
speedy.found("apple")
speedy.found("orange")
alert(speedy.food.length) // 2
alert(lazy.food.length) // 2 (!??)
Run Code Online (Sandbox Code Playgroud)
从示例2开始:当代码到达时 …
我有一个输入,我只想添加一个事件监听器来激活一个函数,当我按下回车键,输入被聚焦时.我如何用纯JS做到这一点?
现在我有:
HTML:
Enter your wage:<input type="text" id="wage" value ="" size=20>
<button id="sub">Submit</button>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
var wage = document.getElementById("wage");
wage.addEventListener("change", validate);
var btn = document.getElementById("sub");
btn.addEventListener("click", validate);
Run Code Online (Sandbox Code Playgroud)
因此,当我单击或更改文本时,函数validate()基本上会激活,但我想通过按Enter来调用它.
我有以下功能
function hello() {
alert("hi!");
}
Run Code Online (Sandbox Code Playgroud)
拿这段代码:
var elem = document.getElementById("btn");
elem.onclick = hello;
Run Code Online (Sandbox Code Playgroud)
我的问题可能有点难以理解,所以请耐心看看:这段代码与普通调用有什么区别,或者是什么使得这段代码需要引用函数变量而不是常规调用?(hello();)
我怎么知道我应该在哪里提供函数的引用,以及什么时候我应该实际调用它?
.on( events [, selector ] [, data ], handler(eventObject) )
Run Code Online (Sandbox Code Playgroud)
我知道这可能听起来有点愚蠢,但有人能解释一下这里的语法吗?
[]是什么意思?我认为这意味着你可以添加几个选项(选择器/数据)但是你也可以添加几个事件,为什么没有events方括号?
这里还有一个例子.on():
$(document).on("click", ".item", function() {
alert("hi");
});
Run Code Online (Sandbox Code Playgroud)
data方法语法中的编写在哪里发挥作用?
所以,假设我有一张桌子,我想操纵其中的特定<td>内容:
HTML:
<table>
<tr><td>1</td> <td>2</td></tr>
<tr><td>3</td> <td>4</td></tr>
<tr><td id="hi">5</td> <td>6</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
document.getElementsByTagName("table")[0].rows[2].cells[0];
Run Code Online (Sandbox Code Playgroud)
这将帮助我REACH表中的特定单元格.
我的问题是:
假设我<td>在表格中有一个特定的:
var td = document.getElementById("hi")
Run Code Online (Sandbox Code Playgroud)
我想知道它在表中的位置,所以我可以使用它table.rows[x].cells[y]
如何检查这个位置?
在这段代码中:
$(function() {
$("div").click(function() {
$(this).before("<p>Hi</p>");
});
});
Run Code Online (Sandbox Code Playgroud)
"这个"实际上指的是什么?它是指整个div的列表,还是仅仅针对特定的div?我怎么知道?
另外,如果我在this没有jQuery标志的情况下编写或者它们是否相同,这是否重要?
来自codeacademy的练习:
function Penguin(name) {
this.name = "Pingy";
this.numLegs = 2;
}
// create your Emperor class here and make it inherit from Penguin
function Emperor (name){
this.name = name;
}
Emperor.prototype = new Penguin();
var emp = new Emperor("Empy");
Run Code Online (Sandbox Code Playgroud)
所以我创建了Emperor继承属性Penguin,现在我知道emp.numLegs将是2.
阅读完评论之后,我编辑了一个问题:你可以看到我在创作时给出了一个名字emp,而且emp.name确实是我的新emp的名字,即"Empy".但是name从Penguin类构造函数继承的呢?它去哪儿了?
var count = 0;
for ( var i = 0; i < 4; i++ ) {
setTimeout(function(){
assert( i == count++, "Check the value of i." );
}, i * 200);
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用(i每次等于4而不是相等)?count, var是在全局范围内创建的,为什么它们在函数内部不可用?
(我想解释为什么这不起作用,我找到了一种方法,通过将其包装在另一个函数中来实现它,只是想要理解)
来自Javascript-Garden:
Foo.method = function() {
function test() {
//this is set to the global object
}
test();
}
Run Code Online (Sandbox Code Playgroud)
为了从测试中获得对Foo的访问,有必要在引用Foo的方法内部创建一个局部变量:
Foo.method = function() {
var that = this;
function test(){
//Use that instead of this here
}
test();
}
Run Code Online (Sandbox Code Playgroud)
有人能解释一下吗?据我所知,this如果在全局范围内调用它,则引用全局对象.但是这里它被称为函数内部,它位于一个方法(第一个例子)中.为什么它确实引用了全局对象,而第二个例子却没有?