คำถามติดแท็ก this

คีย์เวิร์ดที่อ้างถึงอินสแตนซ์คลาสปัจจุบันหรืออ็อบเจ็กต์ในภาษาการเขียนโปรแกรมเชิงวัตถุจำนวนมาก

11
วิธีการเข้าถึง "นี่" ที่ถูกต้องในการติดต่อกลับ?
ฉันมีฟังก์ชั่นการสร้างที่ลงทะเบียนจัดการเหตุการณ์: function MyConstructor(data, transport) { this.data = data; transport.on('data', function () { alert(this.data); }); } // Mock transport object var transport = { on: function(event, callback) { setTimeout(callback, 1000); } }; // called as var obj = new MyConstructor('foo', transport); เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล อย่างไรก็ตามฉันไม่สามารถเข้าถึงdataคุณสมบัติของวัตถุที่สร้างขึ้นภายในการติดต่อกลับ ดูเหมือนthisว่าไม่ได้อ้างถึงวัตถุที่สร้างขึ้น แต่เป็นวัตถุอื่น ฉันยังพยายามใช้วิธีวัตถุแทนฟังก์ชั่นที่ไม่ระบุชื่อ: function MyConstructor(data, transport) { this.data …
1425 javascript  callback  this 

22
คำหลัก“ นี้” ทำงานอย่างไร
Наэтотвопросестьответына Stack Overflow нарусском : ผู้สร้าง: Потеря ฉันสังเกตเห็นว่าไม่มีคำอธิบายที่ชัดเจนว่าthisคำหลักคืออะไรและมีการใช้งานอย่างถูกต้อง (และไม่ถูกต้อง) ใน JavaScript ในไซต์ Stack Overflow อย่างไร ฉันได้เห็นพฤติกรรมแปลก ๆ บางอย่างกับมันและไม่เข้าใจว่าทำไมมันถึงเกิดขึ้น มันthisทำงานอย่างไรและควรใช้เมื่อใด?
1309 javascript  this 

7
'this' vs $ scope ในตัวควบคุม AngularJS
ในส่วน"สร้างส่วนประกอบ" ในหน้าแรกของ AngularJSมีตัวอย่างนี้: controller: function($scope, $element) { var panes = $scope.panes = []; $scope.select = function(pane) { angular.forEach(panes, function(pane) { pane.selected = false; }); pane.selected = true; } this.addPane = function(pane) { if (panes.length == 0) $scope.select(pane); panes.push(pane); } } แจ้งให้ทราบว่าselectวิธีการที่จะถูกเพิ่ม$scopeแต่วิธีการที่จะถูกเพิ่มaddPane thisหากฉันเปลี่ยน$scope.addPaneเป็นรหัสจะแตก เอกสารบอกว่าจริงๆแล้วมีความแตกต่าง แต่ไม่ได้พูดถึงความแตกต่าง: รุ่นก่อนหน้าของ Angular (pre 1.0 RC) อนุญาตให้คุณใช้วิธีการthisสลับแทนกันได้$scopeแต่นี่ไม่ใช่กรณีอีกต่อไป …


7
อะไรคือความแตกต่างระหว่าง '$ (สิ่งนี้)' กับ 'สิ่งนี้'
ฉันกำลังทำงานผ่านบทช่วยสอนนี้: เริ่มต้นกับ jQuery สำหรับสองตัวอย่างด้านล่าง: $("#orderedlist").find("li").each(function (i) { $(this).append(" BAM! " + i); }); $("#reset").click(function () { $("form").each(function () { this.reset(); }); }); โปรดสังเกตในตัวอย่างแรกเราใช้$(this)เพื่อต่อท้ายข้อความบางส่วนภายในของแต่ละliองค์ประกอบ ในตัวอย่างที่สองเราใช้thisโดยตรงเมื่อรีเซ็ตฟอร์ม $(this)thisดูเหมือนว่าจะถูกนำมาใช้มากบ่อยกว่า ฉันเดาในตัวอย่างแรก$()คือการแปลงแต่ละliองค์ประกอบเป็นวัตถุ jQuery ซึ่งเข้าใจการappend()ทำงานในขณะที่ในตัวอย่างที่สองreset()สามารถเรียกได้โดยตรงบนแบบฟอร์ม โดยทั่วไปเราต้องการ$()ฟังก์ชั่นพิเศษ jQuery เท่านั้น ถูกต้องหรือไม่
567 javascript  jquery  this 

8
ความแตกต่างระหว่าง getContext (), getApplicationContext (), getBaseContext () และ“ this”
ความแตกต่างระหว่างคืออะไรgetContext(), getApplicationContext(), getBaseContext()และ " this"? แม้ว่านี่เป็นคำถามง่าย ๆ ที่ฉันไม่สามารถเข้าใจความแตกต่างพื้นฐานระหว่างพวกเขา โปรดยกตัวอย่างง่ายๆถ้าเป็นไปได้


6
การใช้คำสำคัญ“ นี้” ในพารามิเตอร์ที่เป็นทางการสำหรับวิธีการคงที่ใน C #
ฉันพบรหัส C # หลายครั้งเช่น: public static int Foo(this MyClass arg) ฉันไม่สามารถค้นหาคำอธิบายความthisหมายของคำหลักได้ในกรณีนี้ ข้อมูลเชิงลึกใด ๆ
286 c#  parameters  this 

18
ฉันควรใช้“ สิ่งนี้” ในชั้นเรียนเมื่อใด
ฉันรู้ว่าthisหมายถึงวัตถุปัจจุบัน แต่ฉันไม่รู้ว่าเมื่อไรฉันต้องใช้มันจริงๆ ตัวอย่างเช่นจะมีความแตกต่างหรือไม่หากฉันใช้xแทนthis.xวิธีการบางอย่าง? อาจxจะหมายถึงตัวแปรซึ่งเป็นท้องถิ่นสำหรับวิธีการพิจารณา? ฉันหมายถึงตัวแปรที่เห็นในวิธีนี้เท่านั้น เกี่ยวกับthis.method()อะไร ฉันสามารถใช้มันได้หรือไม่ ฉันควรจะใช้มัน ถ้าฉันเพิ่งใช้method()มันจะไม่ถูกนำไปใช้กับวัตถุปัจจุบันหรือไม่
267 java  oop  this 

7
เมื่อใดที่จะเรียกบริบทของกิจกรรมหรือบริบทของแอปพลิเคชัน
มีการโพสต์เกี่ยวกับบริบทสองอย่างนี้มากมาย แต่ฉันยังไม่เข้าใจ ตามที่ฉันเข้าใจแล้ว: แต่ละตัวอย่างของคลาสซึ่งหมายความว่าโปรแกรมเมอร์บางคนแนะนำให้คุณใช้this.getApplicationContext()บ่อยที่สุดเท่าที่จะทำได้เพื่อไม่ให้ "รั่วไหล" หน่วยความจำใด ๆ เนื่องจากอื่น ๆthis(รับActivityบริบทของอินสแตนซ์) ชี้ไปActivityที่ถูกทำลายทุกครั้งที่ผู้ใช้เอียงโทรศัพท์หรือออกจากแอพ ฯลฯ ซึ่งเห็นได้ชัดว่า Garbage Collector (GC) ไม่จับและใช้หน่วยความจำมากเกินไป .. แต่ทุกคนสามารถมาด้วยตัวอย่างการเขียนโค้ดที่ดีจริง ๆ ซึ่งมันเป็นสิ่งที่ถูกต้องที่จะใช้this(รับบริบทของActivityอินสแตนซ์ปัจจุบัน) และบริบทของแอปพลิเคชันจะไร้ประโยชน์ / ผิด

5
ผ่านบริบท“ นี่” ที่ถูกต้องไปยัง setTimeout callback หรือไม่
ฉันจะส่งผ่านบริบทได้setTimeoutอย่างไร ฉันต้องการโทรthis.tip.destroy()ถ้าเกินthis.options.destroyOnHide1,000 มิลลิวินาที ฉันจะทำสิ่งนั้นได้อย่างไร if (this.options.destroyOnHide) { setTimeout(function() { this.tip.destroy() }, 1000); } เมื่อฉันลองด้านบนthisหมายถึงหน้าต่าง

30
คุณใช้คำหลัก“ นี่” เมื่อใด [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันอยากรู้ว่าคนอื่นใช้คำหลักนี้อย่างไร ฉันมักจะใช้มันในตัวสร้าง แต่ฉันอาจใช้มันตลอดชั้นเรียนด้วยวิธีอื่น ตัวอย่างบางส่วน: ในตัวสร้าง: public Light(Vector v) { this.dir = new Vector(v); } ที่อื่น ๆ public void SomeMethod() { Vector vec = new Vector(); double d = (vec * vec) - (this.radius * this.radius); }
249 c#  coding-style  this 

5
ฉันจะส่งผ่านบริบทนี้ไปยังฟังก์ชันได้อย่างไร
ฉันคิดว่านี่จะเป็นสิ่งที่ฉันสามารถทำได้อย่างง่ายดาย google แต่บางทีฉันไม่ได้ถามคำถามที่ถูกต้อง ... ฉันจะตั้งค่าสิ่งใด "สิ่งนี้" ในฟังก์ชันจาวาสคริปต์ที่กำหนดได้อย่างไร ตัวอย่างเช่นชอบฟังก์ชั่นส่วนใหญ่ของ jQuery เช่น: $(selector).each(function() { //$(this) gives me access to whatever selector we're on }); ฉันจะเขียน / เรียกใช้ฟังก์ชันสแตนด์อโลนของตัวเองที่มีการอ้างอิง "นี่" ที่เหมาะสมเมื่อถูกเรียกได้อย่างไร ฉันใช้ jQuery ดังนั้นหากมีวิธีเฉพาะในการทำ jQuery นั่นจะเหมาะอย่างยิ่ง
213 javascript  jquery  scope  this 

4
ฉันจะแยก $ (สิ่งนี้) ออกจากตัวเลือก jQuery ได้อย่างไร
ฉันมีสิ่งนี้: <div class="content"> <a href="#">A</a> </div> <div class="content"> <a href="#">B</a> </div> <div class="content"> <a href="#">C</a> </div> เมื่อคลิกที่ลิงค์ใดลิงค์หนึ่งเหล่านี้ฉันต้องการที่จะใช้งานฟังก์ชัน. leather () บนลิงก์ที่ไม่ได้คลิก ฉันเข้าใจว่า jQuery มีตัวเลือก: ไม่ใช่ตัวเลือก แต่ฉันไม่สามารถหาวิธีใช้ในกรณีนี้ได้เนื่องจากจำเป็นต้องเลือกลิงก์ที่ใช้$(".content a") ฉันต้องการทำบางสิ่งเช่น $(".content a").click(function() { $(".content a:not(this)").hide("slow"); }); แต่ฉันไม่สามารถหาวิธีใช้: ไม่เลือกได้อย่างถูกต้องในกรณีนี้

2
เหตุใดตัวชี้ 'this' จึงไม่ใช่ตัวอ้างอิง
ฉันกำลังอ่านคำตอบสำหรับคำถามนี้ข้อดีและข้อเสีย C ++และมีข้อสงสัยนี้ในขณะที่อ่านความคิดเห็น โปรแกรมเมอร์มักพบว่าสับสนว่า "นี่" เป็นตัวชี้ แต่ไม่ใช่การอ้างอิง ความสับสนอีกอย่างคือทำไม "hello" ไม่ใช่ type std :: string แต่ประเมินเป็น char const * (ตัวชี้) (หลังจากการแปลงอาเรย์เป็นตัวชี้) - Johannes Schaub - litb 22 ธันวาคม 2008 เวลา 1:56 นั่นแสดงให้เห็นว่ามันไม่ได้ใช้แบบแผนเดียวกับภาษาอื่น ๆ (ในภายหลัง) - เลอ dorfier 22 ธันวาคม '08 ที่ 3:35 ฉันจะเรียกสิ่งนี้ว่า "ปัญหาเล็กน้อย" และอุ๊ปส์ขอบคุณสำหรับการจับข้อผิดพลาดเล็กน้อยในตัวอย่างของพฤติกรรมที่ไม่ได้กำหนด :) ถึงแม้ว่าฉันไม่เข้าใจว่าข้อมูลเกี่ยวกับขนาดเกี่ยวข้องกับอะไรในข้อมูลแรก ตัวชี้ไม่ได้รับอนุญาตให้ชี้ออกไปนอกหน่วยความจำที่จัดสรร - วันที่ 22 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.