gpt4 book ai didi

javascript - JavaScript 中的 Getter 和 Setter。 setter 是如何实现的?用于 Angular Controller ?

转载 作者:行者123 更新时间:2023-11-28 00:01:47 24 4
gpt4 key购买 nike

我正在阅读有关 getter 和 setter 的内容,这个示例对我来说很有意义:

var person = {
firstName: 'Jimmy',
lastName: 'Smith'
};

Object.defineProperty(person, 'fullName', {
get: function() {
return firstName + ' ' + lastName;
},
set: function(name) {
var words = name.split(' ');
this.firstName = words[0] || '';
this.lastName = words[1] || '';
}
});

以上相当于:

var person = {
firstName: 'Jimmy',
lastName: 'Smith',
get fullName() {
return this.firstName + ' ' + this.lastName;
},
set fullName (name) {
var words = name.toString().split(' ');
this.firstName = words[0] || '';
this.lastName = words[1] || '';
}
}

person.fullName = 'Jack Franklin';
console.log(person.firstName); // Jack
console.log(person.lastName) // Franklin
  1. 在此代码中:

    person.fullName = ' jack ·富兰克林';

    等号如何调用setter?

  2. 2.

在此 Angular 代码中:

var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data;
});

$scope.orderProp = 'age';
});

当我们在这段代码中声明(或调用?)函数的参数时,是否在幕后使用了 getter:

function ($scope, $http) {...}

依赖注入(inject)器是否根据名称获取这些服务,调用它们以便它们返回某些内容,并将这些服务的返回值设置为这些参数的值?

最佳答案

回答您的问题:

1。等号如何调用setter?

getter 和 setter 是 ECMA 语言构造 - 它通过调用您定义的 setter 函数来工作 - 请参阅 spec

2。当我们在这段代码中声明(或调用?)函数的参数时,是否在幕后使用了 getter:

不,不使用 getter。除非有显式注释,否则 Angular 会使用函数的参数名称来查找之前注册的要注入(inject)的服务 - 请参阅 src 。这就是为什么代码缩小(更改参数名称)会打破这一点,以及为什么需要使用以下两种方法进行显式注释:

app.controller("Foo", FooCtrl);

FooCtrl.$inject = ["$scope", "$http"];
function FooCtrl($scope, $http){
}
app.controller("Foo", ["$scope", "$http", FooCtrl]);

function FooCtrl($scope, $http){
}

关于javascript - JavaScript 中的 Getter 和 Setter。 setter 是如何实现的?用于 Angular Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com