第一篇文章在这里,我安静地来了:)我已经搜索过,但是找不到我想要的东西.
我试图操纵选择框的选定选项.有人可以解释为什么这有效:
$('#some_select_box').click(function() {
$('#some_select_box option:selected').remove();
});
Run Code Online (Sandbox Code Playgroud)
但这不是:
$('#some_select_box').click(function() {
$('this option:selected').remove();
});
Run Code Online (Sandbox Code Playgroud)
我只是想使用"this"而不是拼写出选择框的id - 有人能指出我正确的语法方向吗?这让我很生气,因为它看起来应该很简单.而且我确信这是给某人,但不是我,因为它结束了一天,我被大脑炸了......任何指针都非常赞赏.
干杯
var a = 1;
var b = {
a : 2,
c : function () {
console.log(this.a);
}
};
b.c(); // logs 2
(b.c)(); // logs 2
(0, b.c)(); // logs 1
Run Code Online (Sandbox Code Playgroud)
第一个是可以理解的,因为"this"指的是Object"b".但为什么第二个会记录相同的结果呢?我认为"this"应该指向全局执行上下文.第三个,似乎逗号运算符影响执行上下文.
出于某种原因,我在es6课程中为"this"获得了奇怪的价值......
'use strict';
class Clicker {
constructor(element) {
this.count = 0;
this.elem = element;
this.elem.addEventListener('click', this.click);
// logs Clicker { count:0, elem: button#thing} as expected
console.log(this);
}
click() {
// logs <button id="thing">...</button> as unexpected...
console.log(this);
this.count++;
}
}
var thing = document.getElementById('thing');
var instance = new Clicker(thing);Run Code Online (Sandbox Code Playgroud)
<button id="thing">Click me</button>Run Code Online (Sandbox Code Playgroud)
为什么Clickers的click方法中的"this"指的是dom节点而不是......本身?
更重要的是,如果我不能使用"this"来执行此操作,如何从其"点击方法"中引用Clickers的count属性?
显然clang think decltype(this)是指向cv限定类的指针,而gcc认为它是指向cv限定类的指针的const引用.GCC只认为decltype(&*this)是指向cv限定类的指针.当它用作模板的类型名称时,这会产生一些影响.考虑一个假设的例子:
template<typename T>
class MyContainer {
/* ... */
template<typename ContainerPtr>
class MyIterator {
ContainerPtr container;
/* ... */
};
auto cbegin() const
-> MyIterator<decltype(&*this)> { return { /* ... */ }; }
auto cend() const
-> MyIterator<decltype(this)> { return { /* ... */ }; }
};
Run Code Online (Sandbox Code Playgroud)
在此示例中,实现了一个自定义容器T.作为容器,它支持迭代器.实际上,有两种迭代器:iterators和const_iterators.复制这两个代码没有意义,因此可以编写一个模板迭代器类,获取指向原始类MyContainer<T> *的指针或指向const版本的指针MyContainer<T> const *.
何时cbegin和cend一起使用时,gcc会出错,说它推断出冲突的类型,而clang只是工作正常.
在下面的代码片段中,结果确实令人困惑.
public class TestInheritance {
public static void main(String[] args) {
new Son();
/*
Father father = new Son();
System.out.println(father); //[1]I know the result is "I'm Son" here
*/
}
}
class Father {
public String x = "Father";
@Override
public String toString() {
return "I'm Father";
}
public Father() {
System.out.println(this);//[2]It is called in Father constructor
System.out.println(this.x);
}
}
class Son extends Father {
public String x = "Son";
@Override
public String toString() {
return "I'm Son";
}
} …Run Code Online (Sandbox Code Playgroud) 是否有理由拥有一个像这样的字段的对象:
class Thing {
Thing field;
public Thing() {
this.field = this;
}
}
Run Code Online (Sandbox Code Playgroud)
我不是在谈论一个具有相同类型字段的类,而是一个类,使得类的每个实例都将其自身作为字段.我刚刚在一些遗留代码中看到了这个(这个领域从未使用过),所以我很好奇.任何合法使用这个?
例如,
class Person{
string name;
public:
T& operator*(){
return name;
}
bool operator==(const Person &rhs){
return this->name == rhs.name;
}
bool operator!=(const Person &rhs){
return !(*this == rhs); // Will *this be the string name or the Person?
}
}
Run Code Online (Sandbox Code Playgroud)
如果*this最终提领this的string,而不是一个Person,是有维持的使用一种解决方法*作为类外引用操作?
如果我*不放弃而不放弃使用,那将是一个很大的障碍*this.
var UI$Contract$ddlForm_change = function() {
//'this' is currently the drop down that fires the event
// My question is can I change the context so "this" represents another object?
this = SomeObject;
// then call methods on the new "this"
this.someMethod(someParam);
};
Run Code Online (Sandbox Code Playgroud)
这可能吗?谢谢,〜在圣地亚哥
我想在jQuery中创建一个tictactoe项目,我遇到了一个重大问题......
瓷砖在<td>标签中,我试图使其成为当用户点击瓷砖时,它调用"标记"功能.
如果我们现在查看"标记"函数,$(this)则意图<td>是调用函数的节点.
但是,它没有做任何事情,所以我检查了控制台,显然$(this)是包含DOM Window对象.
无论如何我可以发送正确$(this)的"标记"功能吗?
谢谢!
<script type="text/javascript">
var TURN_X = false;
var TURN_O = true;
var turn = false; // this is to see whos turn it is.
$(document).ready(function(){
var listCells = $.makeArray($("td"));
$("td").click(function(){marked(listCells)}); //THIS IS WHERE I HAVE PROBLEMS
return false;
});
function marked(arr)
{
console.log($(this)); // THIS CONSOLE LOG RETURNS "DOM Window"
$(this).addClass("marked");
if(turn == TURN_X)
{
this.innerHTML = "X";
turn = false;
}
else
this.innerHTML …Run Code Online (Sandbox Code Playgroud) Eclipse会给出一个错误,"赋值的左侧必须是变量",当我尝试类似的东西时:
public class Thing{
String a1;
int a2;
public void meth(){
Thing A = new Thing();
this = A;
}
}
Run Code Online (Sandbox Code Playgroud)
我不得不将每个变量(this.a1 = A.a1; this.a2 = A.a2;)分配为一种解决方法.
是否有其他方法可以在不通过每个变量字段的情况下执行此操作
如果this不是变量,它叫什么?
this ×10
java ×3
javascript ×3
c++ ×2
field ×2
jquery ×2
c++11 ×1
class ×1
click ×1
decltype ×1
dereference ×1
dom-events ×1
ecmascript-6 ×1
inheritance ×1
instance ×1
object ×1
option ×1
pointers ×1
polymorphism ×1
select ×1
selected ×1