Hướng dẫn get context of function javascript - lấy ngữ cảnh của hàm javascript

51

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

var test = {
    demo: function(){
      //get the caller context here
    }
}
//when this gets called, the caller context should be window.
test.demo();

Tôi đã thử arguments.callee và ________ 6, và không có may mắn ...

Đã hỏi ngày 13 tháng 3 năm 2012 lúc 5:57Mar 13, 2012 at 5:57

Hướng dẫn get context of function javascript - lấy ngữ cảnh của hàm javascript

4

Vì từ khóa this đề cập đến ThisBinding trong LexicalEnvironment và javaScript (hoặc ecmascript) không cho phép truy cập lập trình vào LexicalEnvironment (trên thực tế, không có quyền truy cập theo chương trình vào toàn bộ

var test = {
    demo: function() {
        console.log(this);
    }
}
test.demo();    // logs the "test" object
var test2 = test.demo;
test2();        // logs "DOMWindow"
test.demo.apply("Cheese"); // logs "String"
1), do đó không thể có được bối cảnh của người gọi.impossible to get the context of caller.

Ngoài ra, khi bạn thử

var test = {
    demo: function() {
        console.log(this);
    }
}
test.demo();    // logs the "test" object
var test2 = test.demo;
test2();        // logs "DOMWindow"
test.demo.apply("Cheese"); // logs "String"
2 trong bối cảnh toàn cầu, không nên có người gọi nào cả, không phải là bối cảnh đính kèm với người gọi, đây chỉ là một mã toàn cầu, không phải là bối cảnh gọi.no caller at all, neither an attached context to the caller, this is just a Global Code, not a calling context.

Đã trả lời ngày 13 tháng 3 năm 2012 lúc 6:03Mar 13, 2012 at 6:03

Otakustayotakustayotakustay

10,9k3 Huy hiệu vàng37 Huy hiệu bạc43 Huy hiệu đồng3 gold badges37 silver badges43 bronze badges

2

Theo bối cảnh, tôi cho rằng bạn có nghĩa là this? Điều đó phụ thuộc vào cách thức chức năng được gọi, không phải từ nơi nó được gọi.

Ví dụ: sử dụng bảng điều khiển WebKit):

var test = {
    demo: function() {
        console.log(this);
    }
}
test.demo();    // logs the "test" object
var test2 = test.demo;
test2();        // logs "DOMWindow"
test.demo.apply("Cheese"); // logs "String"

Ngẫu nhiên,

var test = {
    demo: function() {
        console.log(this);
    }
}
test.demo();    // logs the "test" object
var test2 = test.demo;
test2();        // logs "DOMWindow"
test.demo.apply("Cheese"); // logs "String"
4 không được chấp nhận.

Đã trả lời ngày 13 tháng 3 năm 2012 lúc 6:11Mar 13, 2012 at 6:11

SethsethSeth

43.3K10 Huy hiệu vàng85 Huy hiệu bạc118 Huy hiệu đồng10 gold badges85 silver badges118 bronze badges

Giá trị của từ khóa this của hàm được đặt bởi cuộc gọi, nó không phải là "ngữ cảnh". Các chức năng có bối cảnh thực thi, bao gồm giá trị này. Nó không được xác định bởi this.

Trong mọi trường hợp, vì tất cả các chức năng đều có biến this là thuộc tính của đối tượng biến của nó, bạn không thể tham khảo bất kỳ từ khóa this nào khác trong phạm vi trừ khi nó được truyền vào hàm. Bạn không thể truy cập trực tiếp đối tượng biến; Bạn phụ thuộc vào độ phân giải biến trên chuỗi phạm vi, vì vậy this sẽ luôn là bối cảnh thực thi hiện tại của this.

Hướng dẫn get context of function javascript - lấy ngữ cảnh của hàm javascript

Isherwood

54,7K15 Huy hiệu vàng107 Huy hiệu bạc147 Huy hiệu đồng15 gold badges107 silver badges147 bronze badges

Đã trả lời ngày 13 tháng 3 năm 2012 lúc 6:06Mar 13, 2012 at 6:06

RobgrobgRobG

Huy hiệu vàng 138K3030 gold badges167 silver badges205 bronze badges

Thật kỳ lạ khi chúng ta đang nói về this ngoại trừ 'Qix - Monica đã bị ngược đãi' bình luận của '. Hoặc là bạn có thể nắm bắt được
'Qix - MONICA WAS MISTREATED''s comment. Either you are able to capture

  1. var test = {
        demo: function(){
          //get the caller context here
        }
    }
    
    test.demo();
    
    2,
  2. công nhân
    var test = {
        demo: function(){
          //get the caller context here
        }
    }
    
    test.demo();
    
    3,
  3. var test = {
        demo: function(){
          //get the caller context here
        }
    }
    
    test.demo();
    
    4
    var test = {
        demo: function(){
          //get the caller context here
        }
    }
    
    test.demo();
    
    5 được mở rộng trong tìm nạp cho nhân viên CloudFlare (hoặc sử dụng this của
    var test = {
        demo: function(){
          //get the caller context here
        }
    }
    
    test.demo();
    
    7) hoặc
  4. Đổi tên một số phạm vi của Phương thức chức năng khác -________ 7 bối cảnh bên ngoài, vì vậy

Tình huống giả thuyết này không có trường hợp sử dụng.

var test = {
    demo: function(){
      //get the caller context here
    }
}

test.demo();

Để đóng cửa, người ta có thể có một nhà máy chức năng được đặt tên động vì một số lý do, trong khi duy trì bối cảnh của nó như vậy:

function body () {}
var test = {
  demo: {
    [name]: function () {return body.apply(body, arguments);} 
       }[name];

Không có vòng lặp, đối số

var test = {
    demo: function(){
      //get the caller context here
    }
}

test.demo();
9 sẽ là
function body () {}
var test = {
  demo: {
    [name]: function () {return body.apply(body, arguments);} 
       }[name];
0

var test = {demo:{}}
const createNamedFunc = (body) => {
  test.demo = return {
    [name]: function () {
      return body.apply(body, arguments);
         } } [name];
}
createNamedFunc(function body (){})

Tôi thu thập 'đối tượng phương thức chức năng này là

  1. Phương pháp sâu sắc nhất của chức năng của các vụ khai báo đối tượng of the object-declarations
  2. của bộ thu phạm vi toàn cầu [đối tượng]
  3. Chuyển nó, cho đến khi định nghĩa hoặc khởi động loại có thể trả về loại NOR -DATA tiếp theo, không nhất thiết phải thực hiện/giao diện phạm vi mở rộng.until the next non-object nor -data-type returnable type definition or instantiation, not necessarily declaration but always implement/extension scope interface.

Đã trả lời ngày 19 tháng 6 lúc 23:23Jun 19 at 23:23

Hướng dẫn get context of function javascript - lấy ngữ cảnh của hàm javascript

Bối cảnh trong chức năng JavaScript là gì?

Bối cảnh là gì? Bối cảnh luôn là giá trị của từ khóa này là một tham chiếu đến đối tượng mà chủ sở hữu mã hiện đang thực hiện mã hoặc chức năng mà nó đã xem xét. Chúng tôi biết rằng cửa sổ là một đối tượng toàn cầu trong trình duyệt, vì vậy nếu chúng tôi gõ cái này vào bảng điều khiển và nó sẽ trả về đối tượng cửa sổ, mà nó làm.a reference to the object that “owns” the currently executing code or the function where it's looked at. We know that window is a global object in the browser so if we type this in the console and it should return window object, which it does.

Bối cảnh của một hàm là gì?

Các hàm bối cảnh là các hàm với (chỉ) các tham số ngữ cảnh.Các loại của chúng là loại chức năng bối cảnh.Dưới đây là một ví dụ về loại chức năng bối cảnh: Loại thực thi [t] = execContext? => T. Các hàm ngữ cảnh được viết bằng cách sử dụng? => Là dấu "mũi tên".functions with (only) context parameters. Their types are context function types. Here is an example of a context function type: type Executable[T] = ExecutionContext ?=> T. Context functions are written using ?=> as the "arrow" sign.

Làm thế nào để bạn kiểm tra xem một hàm được thực thi trong javascript?

Sử dụng toán tử loại trong JavaScript, toán tử loại rất hữu ích để kiểm tra loại biến, hàm, đối tượng, v.v.có thể kiểm tra xem chức năng có được xác định không. In JavaScript, the typeof operator is useful to check the type of the variable, function, objects, etc. When we use the function name as the operand of the typeof variable, it returns the 'function' string, and we can check whether the function is defined.

Phạm vi và bối cảnh có giống nhau không?

Câu trả lời ngắn và đơn giản: Phạm vi liên quan đến khả năng hiển thị của các biến và ngữ cảnh đề cập đến đối tượng mà một hàm thuộc về.Scope pertains to the visibility of variables, and context refers to the object to which a function belongs.