分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

Angular.js 中 copy 赋值与 = 赋值 区别

发布时间:2023-09-06 01:22责任编辑:白小东关键词:jsAngular

转自st.gg

Angular.js 中 copy 赋值与 = 赋值 区别

  为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.user 改变?angular.copy 和 = 号赋值有什么区别呢?新手还没有搞懂,请教各位了。

<!DOCTYPE html><html><script src= "http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script><body><div ng-app="myApp" ng-controller="formCtrl"> ?<form novalidate> ???First Name:<br> ???<input type="text" ng-model="user.firstName"><br> ???Last Name:<br> ???<input type="text" ng-model="user.lastName"> ???<br><br> ???<button ng-click="reset()">RESET</button> ?</form> ?<p>form = {{user }}</p> ?<p>master = {{master}}</p></div><script>var app = angular.module(‘myApp‘, []);app.controller(‘formCtrl‘, function($scope) { ???$scope.master = {firstName:"John", lastName:"Doe"}; ???$scope.reset = function() { ???????$scope.user = angular.copy($scope.master); ???????// 为什么用 $scope.user = $scope.master; master跟着user改变 ???}; ???$scope.reset();});</script></body></html>

你可以这么来理解:

  1. 内存里有一段地址储存了 { firstName: "John", lastName: "Doe" } 这个数据,并且最开始用 $scope.master指向了它

  2. 当你 $scope.user = $scope.master 的时候,事实上是让二者同时指向了该数据,因此一个变了另外一个也会跟着变

  3. 当你 $scope.user = angular.copy($scope.master) 的时候,先做了一份该数据的拷贝(也就是内存中多了另外一份数据,值是一样的,但地址肯定不同),然后让 $scope.user 指向了这份拷贝,所以二者指向了不同的内存地址,当然不会相互影响了。

记住,这并非 Angular 的特殊情况,而是编程语言的通用基础。

其实就是一个是拷贝数据,一个是拷贝引用。无论何种编程语言都会有这个问题,所以就会有深拷贝这种概念。

因为项目着急,要用angular.js,修改老是修改出错,都快疯掉了,修改方法还没写,只是动了动数据,数据的属性全变了。唉。加油吧。

Angular.js 中 copy 赋值与 = 赋值 区别

原文地址:http://www.cnblogs.com/historylyt/p/7780131.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved