我在SO上寻找一个合适的解释,但找不到回答我问题的那个.
我在JavaScript中读到,无法删除对象.所以要发现,我正在浏览器的控制台中玩游戏.我创建了一个这样的对象:
var a = {x:10};
Run Code Online (Sandbox Code Playgroud)
然后我做delete a.x了返回true.(这里没有惊喜)
然后继续删除这样的对象:delete a.
但是,什么难倒我了,而Google Chrome返回false,Firefox返回true
如何在一个浏览器中"删除"一个对象而不在另一个浏览器中"删除"?我在这里缺少什么或浏览器实现是否会导致这种情况?
在FF v27中:

在Google Chrome v33中
.
我试着寻找类似于我的类似问题,但无法得到任何问题.请原谅,如果这个问题是重复的并且已经得到解答.
我的HTML有两个输入字段用于名字和姓氏,还有一个按钮:
<body ng-app="myApp" >
<div ng-controller="myCtrl">
<input type="text" ng-model="fname"/>
<input type="text" ng-model="lname"/>
<input type="button" ng-click="createObj();" value="Clear Scope"/>
<p>Fname = {{fname}}</p>
<p>Lname = {{lname}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的JS文件,它具有控制器功能:
var myApp = angular.module("myApp", []);
myApp.controller("myCtrl",function($scope){
$scope.fname = "sandeep";
$scope.lname = "nayak";
$scope.createObj= function(){
var obj = {fn:$scope.fname, ln: $scope.lname};
console.log(obj);
$scope.fname = "";
$scope.lname = "";
console.log(obj);
};
});
Run Code Online (Sandbox Code Playgroud)
在createObj方法中,我创建一个包含名字和姓氏的对象,然后清除$ scope.
在清除$ scope之前和之后,我将对象记录两次.但我没有看到任何区别.
为什么对象仍然相同,即使在我清除$ scope之后,因为我在我的对象中引用$ scope?
我已经和JSON合作了很长一段时间了.
我知道JSON是stringifiedJavaScript Object.
我也知道是什么使JSON,如下面的线程中所讨论的.
JSON和Object Literal Notation有什么区别?
问题: 但是,我想知道是否有typeof某种方式可以告诉我给定的字符串是JSON还是任何其他字符串.
到目前为止我所观察到的:
1. var data = {"name":"JS"};
alert(typeof(data)); // object. Agree!
2. // I know this is JSON, by looking at the syntax
var data = '{"name":"JS"}';
alert(typeof(data)); // string.
3. // I know this is just any other string (NOT JSON), by looking at the syntax.
var data = "AnyOtherString";
alert(typeof(data)); // string
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,有什么方法可以区分上面的第2 点和第3点.可能,类似的东西typeof会告诉我它是否只是一个字符串或JSON(也是一个字符串).